几种reactor模型

reactor模型

  • 组成:非阻塞的I/O+I/O多路复用
  • 特征:基于事件循环,以事件驱动或事件回调的方式实现业务逻辑
  • 表述:将连接的I/O处理转化为事件处理

单reactor

几种reactor模型_第1张图片
使用1个epoll和1个线程
代表:redis 内存数据库 操作redis当中的数据结构
redis6.0多线程 处理数据的解压缩 数据压缩
放在多线程中处理resp协议 数据解压缩会损耗cpu 影响其他网络处理

单reactor+任务队列+线程池

几种reactor模型_第2张图片
解决网络连接和业务处理之间的相互影响,做任务队列来解耦,用线程池来消费
一个线程处理网络事件,多个线程处理任务队列,读到数据以后写到任务队列中,然后再交给线程池处理

多reactor

几种reactor模型_第3张图片
每个线程对应一个epoll reactor
接收连接的事件和处理读写事件进行分离
接收连接用一个epoll
处理一个读写是一个epoll
应用:memcached

多进程

几种reactor模型_第4张图片
每个worker进程都有一个reactor 谁拿到这把锁,就有处理连接的权利,可以解决惊群问题。
accept接收新的连接后,返回fd,交给epoll来处理,再将锁释放

多reactor+消息队列+线程池

业务场景中比较多 网络密集型+业务密集型

你可能感兴趣的:(网络编程,网络编程,reactor,epoll,redis,nginx)