主题
网络 I/O 与连接管理
阻塞 I/O、非阻塞 I/O 与异步 I/O
阻塞调用等待结果。非阻塞调用在暂时无法推进时立即返回。异步 I/O 提交操作后可继续执行,通过完成通知获取结果。
可读就绪表示操作可能推进,完成事件表示已提交的操作有了结果。
I/O 多路复用(select、poll、epoll、kqueue)
多路复用让线程等待多个描述符。select 与 poll 通常传入描述符集合,epoll 和 kqueue 支持注册关注对象并返回事件。
边沿触发常需持续读写直到暂不可用。就绪通知之后仍应处理竞争和部分读写。
Reactor 与 Proactor 模型
两种模型都可使用回调,区别在于回调触发时 I/O 是否已经完成。
高并发连接管理与连接池
连接池复用已建立连接,减少握手并限制上游并发。池通常需要管理空闲期限、失效连接、等待队列和背压。
池耗尽会引入排队延迟。多路复用协议还要考虑每条连接可用的并发流额度。
