每日一博 | 爱奇艺网络协程编写高并发应用实践
本⽂以爱奇艺开源的⽹络协程库(https://github.com/iqiyi/libfiber)为例,讲解⽹络协程的设计原理、编程实践、性能优化等⽅⾯内容。 ⼀、概述 早年间, ⽀持多个⽤户并发访问的服务应⽤,往往采⽤多进程⽅式,即针对每⼀个 TCP ⽹络连接创建⼀个服务进程。在 2000 年左右,⽐较流⾏使⽤ CGI ⽅式编写 Web 服务,当时⼈们⽤的⽐较多的 Web 服务器是基于多进程模式开发的 Apache1.3.x 系列,因为进程占⽤系统资源较多,所以⼈们开始使⽤多线程⽅式编写 Web 应用服务,线程占⽤的资源更少,这使单台服务器⽀撑的⽤户并发度提⾼了,但依然存在资源浪费的问题。因为在多进程或多线程编程⽅式下,均采⽤了阻塞通信⽅式,对于慢连接请求,会使服务端的进程或线程因『等待』客户端的请求数据⽽不能做别的事情,⽩⽩浪费了操作系统的调度时间和系统资源。这种⼀对⼀的服务⽅式在⼴域⽹的环境下显示变得不够廉价,于是⼈们开始采⽤⾮阻塞⽹络编程⽅式来提升服务端网络并发度,⽐较著名的 Web 服务器 Nginx 就是⾮阻塞通信服务的典型代表,另外还有象 Java Netty 这样的⾮阻...
