Reactor网络编程模型

1.传统的网络请求处理方式

在这里插入图片描述
每接收一个客户端的请求,服务端都会创建一个线程来处理。这种就是同步阻塞 I/O 模式,开发维护成本比较小,适合连接数比较少的服务。
既然每个请求分配一个线程不合适,怎样才能一个线程中处理多个请求?我们可采用分治的思想,将处理流程拆分成更小的任务,减少每个线程的阻塞时间,基于事件驱动 。

2.单线程 Reactor 模式在这里插入图片描述

这里 Reactor 是单线程的,接收所有的客户端请求,连接请求分配给 acceptor,数据处理分配给处理的线程。
在这里插入图片描述
将业务处理线程与 I/O 处理拆分开,这样就可以避免 Reactor 线程由于业务处理造成阻塞,同样业务线程也不会受 Reactor 网络读取和发送的影响。

3.多个 Reactor在这里插入图片描述

mainReactor:负责监听收客户端的连接。对应 Netty 中的 bossGroup,一般一个线程就够了。
subReactor:负责读取发送数据,将请求分配给业务线程池。对应 Netty 中的 workerGroup。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页