最近一年学到的网络编程知识

部署模型

多进程模型:

  • 一个通讯进程,一个业务进程,两者通过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模式下面另当别论)