加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Reactor反应器模式 (epoll)

发布时间:2020-12-15 20:25:32 所属栏目:百科 来源:网络整理
导读:1. 背景 最近在看redis源码,主体流程看完了。 在网上看到了reactor模式,看了一下,其实我们经常使用这种模式。 2. 什么是reactor模式 反应器设计模式(Reactor pattern)是一种为处理并发服务请求,并将请求提交到一个或者多个服务处理程序的事件设计模式。

1. 背景

最近在看redis源码,主体流程看完了。
在网上看到了reactor模式,看了一下,其实我们经常使用这种模式。

2. 什么是reactor模式

反应器设计模式(Reactor pattern)是一种为处理并发服务请求,并将请求提交到一个或者多个服务处理程序的事件设计模式。
当客户端请求抵达后,服务处理程序使用多路分配策略,由一个非阻塞的线程来接收所有的请求,然后派发这些请求至相关的工作线程进行处理。
简单说,就是如何处理多个客户端的并发请求的解决模式。

3. 一般实现方法

3.1 epoll管理大量客户端(可读、可写)

处理大量客户端请求,不能去挨个轮训,这个要使用epoll。
epoll由于select,poll。这个网上有很多资料。

3.2 请求的单线程处理(redis中的特殊处理)

到达服务端的请求,redis代码中,使用单线程处理。
redis使用就是单线程既要处理连接、也要处理请求,因为redis全内存,避免了线程间加锁、切换等。

3.3 请求的多线程处理(更一般的架构处理)

通常架构中都是采用多线程来处理到达服务器的请求。
将请求放到无锁队列中,处理线程循环来请求任务即可。
因为服务器代码中,可能会访问第三方存储等长耗时处理。用多线程加速。

4. 参考

  • IO多路复用之epoll
  • Reactor(反应器)模式初探
  • 无锁、线程安全队列

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读