🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### 单Reactor多线程 ![](https://img.kancloud.cn/4a/43/4a43ce2328b898e90d9489a7dab15d57_904x869.png) 方案说明: 1)Reactor 对象通过 Select 监控客户端请求事件,收到事件后通过 Dispatch 进行分发; 2)如果是建立连接请求事件,则由 Acceptor 通过 Accept 处理连接请求,然后创建一个 Handler 对象处理连接完成后续的各种事件; 3)如果不是建立连接事件,则 Reactor 会分发调用连接对应的 Handler 来响应; 4)Handler 只负责响应事件,不做具体业务处理,通过 Read 读取数据后,会分发给后面的 Worker 线程池进行业务处理; 5)Worker 线程池会分配独立的线程完成真正的业务处理,如何将响应结果发给 Handler 进行处理; 6)Handler 收到响应结果后通过 Send 将响应结果返回给 Client。 优点:可以充分利用多核 CPU 的处理能力。 缺点:多线程数据共享和访问比较复杂;Reactor 承担所有事件的监听和响应,在单线程中运行,高并发场景下容易成为性能瓶颈