併發多進程服務器和多線程服務器總結

多進程服務器和多線程服務器區別

多進程的服務器就好比是 立體的交通系統(立交橋)雖然說建造的時候花費比較大,消耗的資源比較多,但是真要是跑起來不會交通堵塞。但是汽車在上面跑,相互通信就是個很費事兒問題(進程間通信比較麻煩);
多線程就好比是平面的交通系統,造價低,但是很容易交通堵塞, 但是也有好處同步的時候方便。

在網絡服務器方面

單進程 < 多進程(單線程)< 多進程(多線程)

在遊戲方面的應用

多線程服務器

  1. 按場景分線程,一個線程管理若干個場景。這樣配置靈活,一個線程可以管理若干個小場景,除非有個場景人多到一個CPU跑不下來,一般的遊戲都會滿足需求。缺點則是不在同一線程的Object在做邏輯交互時,必須用異步,如果用到了腳本,那麼這裏的複雜度和性能要值得注意。如果項目中出現單個服務器解決不鳥的問題(例如戰場服務器),似乎就成了多線程多進程的龐大架構。
  2. 按功能分線程,例如Object的管理和查找,NPCAI的尋路,這種方式貌似在做邏輯需要分離到別的線程模塊功能時有點麻煩,如果直接上鎖等待肯定不是最好的方式,所以這些邏輯必須變成異步。

多進程服務器
其實這裏可以理解爲把多線程要處理的數據放到了進程上來處理,client和進程之間通過網關來處理數據,這個模式優點是便於擴展。數據處理不過來就加機器進行分佈
畫個簡單流程圖讓大家簡單理解下
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章