當前位置: 華文問答 > 遊戲

請教一下關於網遊伺服器網絡層IO多執行緒效率問題?

2014-04-07遊戲

今天我們聊一下高並行下的網絡 IO 模型

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

  • 傳統網絡 IO 模型的缺陷
  • 針對傳統網絡 IO 模型缺陷的改進
  • 多執行緒/多行程
  • 阻塞改為非阻塞
  • IO 多路復用
  • Reactor 的幾種模型介紹
  • 傳統網絡 IO 模型的缺陷

    我們首先來看下傳統網絡 IO 模型有哪些缺陷,主要看它們的阻塞點有哪些。我們用一張圖來看下客戶端和伺服端的基於 TCP 的通訊流程

    服務