网络模型
传统网络模型
PPC、prefork
优点
实现简单
缺点
- PPC:fork代价高,性能低
- 父子进程通信要用IPC,监控统计等实现复杂
- OS的上下文切换会限制并发连接数,一般几百
TPC、prethread
优点
- 实现简单
- 无需IPC,线程中通信即可
- 无需fork,线程创建代价相对创建进程低
缺点
- 线程互斥和共享比PPC、prefork复杂
- 某个线程故障可能导致整个进程退出
- OS的上下文切换会限制并发连接数,一般几百,比PPC、prefork高
Reactor网络模型
Reactor:Reactor基于多路复用的事件响应网络编程模型
多路复用:多个连接复用同一个阻塞对象,例如Java的Selector、epoll的epoll_fd(epoll_create函数创建)
事件响应:不同事件分发给不同对象处理,Java的事件有OP_ACCEPT、OP_CONNECT、OP_READ、OP_WRITE
缺点:实现比传统的网络模型复杂
优点:支持海量连接