温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Netty的线程模型

发布时间:2020-08-02 15:14:48 来源:网络 阅读:1060 作者:许大虫 栏目:开发技术

    当我们讨论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中,推荐使用该线程模型


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI