分布式服务框架介绍:最成熟的开源NIO框架Netty

尽管JDK提供了丰富的NIO类库,网上也有不少NIO学习例程,可是直接使用Java NIO类库想要开发出稳定可靠的通讯框架却并不是易事,缘由以下:

1)NIO的类库和API繁杂,使用麻烦,你须要熟练掌握 Selector、Server Socket Channel
SocketChannel、ByteBuffer等。

2) 须要具有其余的额外技能作铺垫,例如熟悉Java多线程编程。这是由于NIO编程涉及到 Reactor模式,你必须对多线程和网路编程很是熟悉,才能编写出高质量的NIO程序。

3)可靠性能力补齐,工做量和难度都很是大。例如客户端面临断连重连、网络闪断、半包读写、失败缓存、网络拥塞和异常码流的处理等问题,NIO编程的特色是功能开发相对容易,可是可靠性能力补齐的工做量和难度都很是大。

4) JDK NIO的BUG,例如臭名昭著的epoll bug,它会致使Selector空轮询,最终致使CPU100% 。官方声称在JDK16版本的 updateI8修复了该问题,可是直到JDK1.7版本该问题仍旧存在,只不过该BUG发生几率下降了一些而已,它并无被根本解决。该BUG以及与该BUG相关的问题单能够参见如下连接内容:

http://bugsjava.com/bugdatabase/viewbug.do?bugid=6403933
http:/bugs.javacom/bugdatabase/viewbugdo?bugid=2147719

随着开源NO框架的发展,目前愈来愈多的商用系统采起直接集成开源NO框架的方式代替以前的自研方案。以最成熟的NIO框架Netty为例,它已经获得成百上千的商用项目验证。例如 Hadoop的RPC框架avro使用Netty做为底层通讯框架、实时流式计算框架Sum底层通讯框架也采用的是Netty,还有 Twitter内部使用的RPC框架 Finagle,其底层通讯框架也基于Netty构建。


 java

Netty的优点总结以下:

◎API使用简单,开发门槛低。

◎功能强大,预置了多种编解码功能,支持多种主流协议。

◎定制能力强,能够经过 ChannelHandler对通讯框架进行灵活地扩展。

◎性能高,经过与其余业界主流的NO框架对比,Netty的综合性能最优。

◎成熟、稳定,Nety修复了已经发现的全部 JDK NIO BUG,业务开发人员不须要再为N1O的BUG而烦恼。

◎社区活跃,版本迭代周期短,发现的BUG能够被及时修复。同时,更多的新功能会加入。

◎经历了大规模的商业应用考验,质量获得验证。在互联网、大数据、网络游戏、企业应用、电信软件等众多行业获得成功商用,证实了它已经彻底可以知足不一样行业的商业应用了。

Netty的表现如此优秀,所以咱们的通讯框架基于Netty进行设计和开发。编程

相关文章
相关标签/搜索