今天我們聊一下高並行下的網絡 IO 模型
高並行即我們所說的 C10K(一個 server 服務 1w 個 client),C10M,寫出高並行的程式相信是每個後端程式設計師的追求,高並行架構其實有一些很通用的架構設計,如無鎖化,緩存等,今天我們主要研究下高並行下的網絡 IO 模型設計,我們知道不管是 Nginx,還是 Redis,Kafka,RocketMQ 等中介軟體,都能輕松支持非常高的 QPS,其實它們背後的網絡 IO 模型設計理念都是一致的,所以了解這一塊對我們了解設計出高並行的網絡 IO 框架具體重要意義,本文將會從以下幾個方面來循序漸近地向大家介紹如何設計出一個高並行的網絡 IO 框架
傳統網絡 IO 模型的缺陷
我們首先來看下傳統網絡 IO 模型有哪些缺陷,主要看它們的阻塞點有哪些。我們用一張圖來看下客戶端和伺服端的基於 TCP 的通訊流程
服務