Netty线程模型

Netty线程模型

一、Reactor模型

Reactor模式,通过一个或多个输入同时传递给服务处理器的模式,服务器端程序处理传入的多个请求,并将它们同步分派到相应的处理线程, 因此Reactor模式也叫Dispatcher模式 。Reactor模式使用IO复用监听事件,收到事件后,分发给某个线程(进程),这点就是网络服务器高并发处理的关键。

1. 单Reactor单线程

image-20210713165010154

存在问题:

  1. 性能问题:只有一个线程,无法完全发挥多核CPU的性能。Handler在处理某个连接上的业务时,整个进程无法处理其他连接事件,很容易导致性能瓶颈。
  2. 可靠性问题:线程意外终止或者进入死循环,会导致整个系统通信模块不可用,不能接收和处理外部消息,造成节点故障。

2. 单Reactor多线程

image-20210713165222080

如果是处理请求事件,分发给给Handler之后真正的执行者是Worker线程池中的线程。

存在问题:

多线程数据共享和访问比较复杂, reactor处理所有事件的监听和响应。单线程运行的情况下,在高并发场景容易出现性能瓶颈。

3. 主从Reactor多线程

image-20210713165549799
  • Reactor主线程负责接收所有的请求,并且处理Accept事件

  • Reactor子线程负责业务的处理,派发给不同的Handler进行处理

  • 分发给给Handler之后真正的执行者是Worker线程池中的线程

优缺点:

  • 编程复杂度较高(缺点)

  • 这种模式也被叫做服务器的1+M+N 线程模式,即使用该模式开发的服务器包含一个连接建立线程 + M个IO线程 + N个业务处理线程。

    • 连接建立线程可以有多个,1只是表示相对较少

二、Netty线程模型

Netty的线程模型主要基于主从Reactor多线程模式:

image-20210713170220449

Boss线程主要监听accept事件,连接建立之后的业务处理由Worker线程处理(Handler)。

更进一步:

image-20210713211514868

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nice2cu_Code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值