在这里我们主要从TCP应用部分讲述 Netty 的架构体系。
它涉及到的内容主要分为三个部分 : bootstrap, channel, eventLoop.

bootstrap 主要负责服务建立与发布 ;
channel 主要负责协议建立与协议事件处理 ;
eventloop 主要负责任务执行与事件监听;
在基于 TCP 的 socket 程序里面, 我们的协议主要是指一个 socket 的建立, listen, accept, connect, read, write 等。
netty 使用协议与逻辑分离的思想, 允许我们通过接口来实现, 当协议事件发生时, 我们改如何处理我们的逻辑。
在Netty中,Selector(或者Reactor) 称作EventLoop,在Netty中采用的是单bossEventLoop+多workEventLoop的模式,由bossEventLoop负责响应client的连接请求,并建立连接,由多个workEventLoop负责维护客户端socket的数据交互和读写工作,每个EventLoop都会在一个独立的线程中执行。。
什么是Netty?
Netty 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架。
Netty 是一个广泛使用的 Java 网络编程框架(Netty 在 2011 年获得了Duke's Choice Award,见https://www.java.net/dukeschoice/2011)。它活跃和成长于用户社区,像大型公司 Facebook 和 Instagram 以及流行 开源项目如 Infinispan, HornetQ, Vert.x, Apache Cassandra 和 Elasticsearch 等,都利用其强大的对于网络抽象的核心代码。
以上是摘自《Essential Netty In Action》这本书,本文的内容也是本人读了这本书之后的一些整理心得,如有不当之处欢迎大虾们指正
Netty和Tomcat有什么区别?
Netty和Tomcat最大的区别就在于通信协议,Tomcat是基于Http协议的,他的实质是一个基于http协议的web容器,但是Netty不一样,他能通过编程自定义各种协议,因为netty能够通过codec自己来编码/解码字节流,完成类似redis访问的功能,这就是netty和tomcat最大的不同。
有人说netty的性能就一定比tomcat性能高,其实不然,tomcat从6.x开始就支持了nio模式,并且后续还有APR模式——一种通过jni调用apache网络库的模式,相比于旧的bio模式,并发性能得到了很大提高,特别是APR模式,而netty是否比tomcat性能更高,则要取决于netty程序作者的技术实力了。
为什么Netty受欢迎?
如第一部分所述,netty是一款收到大公司青睐的框架,在我看来,netty能够受到青睐的原因有三:
- 并发高
- 传输快
- 封装好
Netty为什么并发高
Netty是一款基于NIO(Nonblocking I/O,非阻塞IO)开发的网络通信框架,对比于BIO(Blocking I/O,阻塞IO),他的并发性能得到了很大提高,两张图让你了解BIO和NIO的区别:
阻塞IO的通信方式

最低0.47元/天 解锁文章
1711

被折叠的 条评论
为什么被折叠?



