持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天,点击查看活动详情
Reactor模型是高性能网络系统实现高并发请求处理的一个重要技术方案。
1 Reactor模型
网络服务器端用来处理高并发网络IO请求的一种编程模型:
- 三类处理事件,即连接事件、写事件、读事件
- 三个关键角色,即reactor、acceptor、handler。
2 事件类型
Reactor模型处理的是CS交互过程,这三类事件正好对应CS交互过程中,不同类请求在服务器端引发的待处理事件:
- 当一个C要和S交互,C会向S发送连接请求,以建立连接,对应S的一个连接事件
- 连接建立后,C会给S发送读请求,以便读取数据。S在处理读请求时,需向C写回数据,对应S的写事件
- 无论C给S发送读或写请求,S都要从C读取请求内容,读或写请求的读取就对应S的读事件
CS交互过程中,不同类请求和Reactor模型事件的对应关系:
这三类事件由谁处理呢?
3 关键角色
- 连接事件由acceptor处理,负责接收连接;acceptor在接收连接后,会创建handler,用于网络连接上对后续读写事件的处理
- 读写事件由handler处理
- 高并发场景中,连接事件、读写事件会同时发生,所以,需要有个角色专门监听和分配事件 - reactor。当有连接请求时,reactor将产生的连接事件交由acceptor处理;当有读写请求时,reactor将读写事件交由handler处理
这三个角色都是Reactor模型中要实现的功能的抽象。遵循Reactor模型开发服务器端的网络框架时,就需要在编程的时候,在代码功能模块中实现reactor、acceptor和handler逻辑。
这三个角色是围绕事件的监听、转发和处理来进行交互的,该如何实现这三者的交互呢?就需要事件驱动框架。