Netty的线程模型-创新互联

当我们讨论Netty线程模型的时候,一般首先会想到的是经典的Reactor线程模型,尽管不同的NIO框架对于Reactor模式的实现存在差异,但本质上还是遵循了Reactor的基础线程模型。下面浅谈一下我对Reactor线程模型的认识

创新互联服务项目包括霍城网站建设、霍城网站制作、霍城网页制作以及霍城网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,霍城网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到霍城省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

    1.Reactor单线程模型,是指所有的I/O操作都在同一个NIO线程上面完成。NIO线程的职责如下

作为NIO服务端,接收客户端的TCP连接

作为NIO客户端,向服务端发起TCP连接

读取通信对端的请求或者应答消息

向通信对端发送消息请求或者应答消息

Netty的线程模型

    对于小容量的应用可以用单线程,但是对于高负载、大并发的应用不适用,因为性能上无法支撑

    2.Rector多线程模型与单线程模型大的区别就是有一组NIO线程来处理I/O操作,特点如下:

有专门一个NIO线程---Acceptor线程用于监听服务端,接收客户端的TCP连接请求

网络I/O操作--读、写等由一个NIO线程池负责,线程池可以采用标准的JDK线程池实现

一个NIO线程可以同时处理N条链路,但是一个链路只对应一个NIO线程,防止发生并发操作

Netty的线程模型

大多数情况下,用多线程模型就可以满足性能需求,但是如果一个NIO线程负责监听和处理大量连接也有可能会存在性能问题。

    3.主从Reactor多线程模型

Netty的线程模型

服务端用于接收客户端连接的不在是一个单独的NIO线程,而是一个独立的NIO线程池。Acceptor接收到客户端TCP连接请求并处理完成后(可能包含介入认证等),将新创建的SocketChannel注册到I/O线程池的某个I/O线程上,由它负责SocketChannel的读写和编解码工作,可以解决一个服务端监听线程性能不足的问题,因此Netty的官方demo中,推荐使用该线程模型

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站标题:Netty的线程模型-创新互联
分享链接:http://scyanting.com/article/dcsdep.html