请阐述 Reactor 线程模型的核心设计思想,包括其主要组件、线程分工以及相较于传统阻塞 I/O 模型的优势。
考察说明
考查对 Reactor 线程模型的理解,包括事件驱动、组件划分和并发模型。
回答思路
- 【回答框架 1】Reactor 线程模型是事件驱动架构,核心由 Reactor(事件分发器)和 Handlers(事件处理器)组成。Reactor 负责监听 I/O 事件,当事件就绪时,将其分发给对应的 Handler 处理。
- 【回答框架 2】单 Reactor 单线程:一个 Reactor 线程负责接收连接和分发事件,Handler 在同一线程中执行,适用于处理时间短、CPU 密集场景。
- 【回答框架 3】单 Reactor 多线程:Reactor 线程只负责分发,业务处理由工作线程池执行,避免 Reactor 线程阻塞,提升吞吐,但 Reactor 仍是单点。
- 【回答框架 4】主从 Reactor:mainReactor 只负责处理连接,subReactor 负责后续 I/O 事件的读写和分发,是 Netty 采用模型,支持高并发连接。
- 【关键点 1】Reactor 模型基于事件驱动,将 I/O 操作转化为事件通知。
- 【关键点 2】主要组件包括 Reactor、Acceptor、Handler。
- 【关键点 3】分为单线程、多线程和主从多线程三种变体。
- 【关键点 4】提高系统对高并发和海量连接的支撑能力。
- 【易错点 1】单 Reactor 单线程中,若 Handler 执行耗时操作,会阻塞整个线程,导致其他连接无法处理。
- 【易错点 2】使用多线程时,需要考虑线程安全与上下文切换开销。
- 【易错点 3】不能简单认为多线程一定比单线程快,需要权衡资源与场景。