部署模型
多进程模型:
- 一个通讯进程,一个业务进程,两者通过IPC通讯,这个目前没有看到开源的实现,部门内部有两套框架是基于这个模型,但是都需要遵守一定的协议,否则无法通讯。
主进程fork一定数量进程,子进程同时accept,比较典型的有lighttpd
多线程模型:主进程aceept,多个工作线程round-robin方式处理链接,比较典型的有muduo,asioexamplehttpserver2
网络库
Reactor模式:muduo,libevent
Proactor模式:asio
杂项
- input/output buffer对健壮的非阻塞方式编码比较重要
- 对latency不太敏感的大量数据传输时,recv/send buffer需要合理设置
- 写操作很少会阻塞,如果出现阻塞可以通过select/epoll等机制监听WRITE事件,写完后删除该事件(ET模式下面另当别论)