Reactor 模式中 核心组成:
- Reactor:Reactor 在一个单独的线程中运行,负责监听和分发事件,分发给适当的处理程序来对 IO 事件做出反应。 它就像公司的电话接线员,它接听来自客户的电话并将线路转移到适当的联系人;
- Handlers:处理程序执行 I/O 事件要完成的实际事件,类似于客户想要与之交谈的公司中的实际官员。Reactor通过调度适当的处理程序来响应 I/O 事件,处理程序执行非阻塞操作。
单 Reactor 单线程

- Select 是前面 I/O 复用模型介绍的标准网络编程 API,可以实现应用程序通过一个阻塞对象监听多路连接请求
- Reactor 对象通过 Select 监控客户端请求事件,收到事件后通过 Dispatch 进行分发
- 如果是建立连接请求事件,则由 Acceptor 通过 Accept 处理连接请求,然后创建一个 Handler 对象处理连接完成后的后续业务处理
- 如果不是建立连接事件,则 Reactor 会分发调用连接对应的 Handler 来响应
- Handler 会完成 Read→业务处理→Send 的完整业务流程
优缺点
优点:模型简单,没有多线程、进程通信、竞争的问题,全部都在一个线程中完成
缺点:
- 性能问题,只有一个线程,无法完全发挥多核 CPU 的性能。Handler 在处理某个连接上的业务时,整个进程无法处理其他连接事件,很容易导致性能瓶颈
- 可靠性问题,线程意外终止,或者进入死循环,

Reactor模式是事件驱动设计模式的一种,主要分为单Reactor单线程、单Reactor多线程和主从Reactor多线程模型。单线程模型简单但可能引发性能瓶颈和可靠性问题;多线程模型能充分利用多核CPU,但处理复杂。Netty的线程模型采用了BossGroup和WorkerGroup,分别处理连接接受和网络读写,优化了事件处理效率。
netty框架—reactor线程模型详解&spm=1001.2101.3001.5002&articleId=129731055&d=1&t=3&u=1cb55f8ce3a8465194ec20246f03b5f8)
904

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



