Reactor反应器模式 (epoll)
1. 背景
最近在看redis源码,主体流程看完了。
在网上看到了reactor模式,看了一下,其实我们经常使用这种模式。
2. 什么是reactor模式
反应器设计模式(Reactor pattern)是一种为处理并发服务请求,并将请求提交到一个或者多个服务处理程序的事件设计模式。
当客户端请求抵达后,服务处理程序使用多路分配策略,由一个非阻塞的线程来接收所有的请求,然后派发这些请求至相关的工作线程进行处理。
简单说,就是如何处理多个客户端的并发请求
的解决模式。
3. 一般实现方法
3.1 epoll管理大量客户端(可读、可写)
处理大量客户端请求,不能去挨个轮训,这个要使用epoll。
epoll由于select, poll。这个网上有很多资料。
3.2 请求的单线程处理(redis中的特殊处理
)
到达服务端的请求,redis代码中,使用单线程处理。
redis使用就是单线程既要处理连接、也要处理请求,因为redis全内存,避免了线程间加锁、切换等。
3.3 请求的多线程处理(更一般的架构处理
)
通常架构中都是采用多线程来处理到达服务器的请求。
将请求放到无锁队列
中,处理线程循环来请求任务即可。
因为服务器代码中,可能会访问第三方存储等长耗时处理。用多线程加速。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
2017-08-12 C/C++ 分支预测(likely unlikely)