从零学架构(三十七)


网络模型

传统网络模型

PPC、prefork

优点

实现简单

缺点
  1. PPC:fork代价高,性能低
  2. 父子进程通信要用IPC,监控统计等实现复杂
  3. OS的上下文切换会限制并发连接数,一般几百

TPC、prethread

优点
  1. 实现简单
  2. 无需IPC,线程中通信即可
  3. 无需fork,线程创建代价相对创建进程低
缺点
  1. 线程互斥和共享比PPC、prefork复杂
  2. 某个线程故障可能导致整个进程退出
  3. OS的上下文切换会限制并发连接数,一般几百,比PPC、prefork高

Reactor网络模型

Reactor:Reactor基于多路复用的事件响应网络编程模型

多路复用:多个连接复用同一个阻塞对象,例如Java的Selector、epoll的epoll_fd(epoll_create函数创建)

事件响应:不同事件分发给不同对象处理,Java的事件有OP_ACCEPT、OP_CONNECT、OP_READ、OP_WRITE

缺点:实现比传统的网络模型复杂

优点:支持海量连接

模式一:单Reactor单进程/单线程

模式二:单Reactor多线程

模式三:多Reactor多进程/线程

Proactor网络模型

网络模型对比

三类网络模型实战技巧

小结


文章作者: maybe
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 maybe !