知识卡片

Reactor三种典型实现的取舍

普通读书笔记卡 · 1669.a

内容

Reactor有三种实现:单Reactor单进程/线程最简单,但无法利用多核,会阻塞其他连接(Redis用此模式);单Reactor多线程能利用多核,却引入同步复杂度,且Reactor自身易成瓶颈;多Reactor多进程/线程让子进程各有独立Reactor、彼此无需同步,反而比单Reactor多线程更易维护(Nginx用此模式)。发散:拆分职责、减少共享状态,往往比塞更多并发逻辑到一处更简单。

参考来源

- 位置:《从0开始学架构》第23章《19|单服务器高性能模式:Reactor与Proactor》(源文件:_epub-src/OEBPS/Text/part0022_split_001.html、part0022_split_002.html) - 结论依据:原文明确"单Reactor单进程的方案在实践中应用场景不多,只适用于业务处理非常快速的场景,目前比较著名的开源软件中使用单Reactor单进程的是Redis";"Reactor承担所有事件的监听和响应,只在主线程中运行,瞬间高并发时会成为性能瓶颈"(单Reactor多线程的缺陷);"目前著名的开源系统Nginx采用的是多Reactor多进程"。 - 原始内容:单Reactor单进程的方案在实践中应用场景不多,只适用于业务处理非常快速的场景,目前比较著名的开源软件中使用单Reactor单进程的是Redis……Reactor承担所有事件的监听和响应,只在主线程中运行,瞬间高并发时会成为性能瓶颈……目前著名的开源系统Nginx采用的是多Reactor多进程。