《王者榮耀遊戲服務器架構演進(完整版)》讀後感

原文地址:https://mp.weixin.qq.com/s/l1pnVc_E-Nz6Z27iC0G6GAnginx

1.遊戲服務器特徵web

遊戲服務器端,是一個會長期運行的程序,而且它還要服務於多個不定時,不定點的網絡請求。因此這類軟件的特色是要很是關注穩定性和性能。這類程序若是須要多個協做來提升承載能力,則還要關注部署和擴容的便利性;同時,還須要考慮如何實現某種程度容災需求。因爲多進程協同工做,也帶來了開發的複雜度,這也是須要關注的問題。編程

功能約束,是架構設計決定性因素。基於遊戲領域的功能特徵,對服務器端系統來講,有如下幾個特殊的需求:緩存

對於遊戲數據和玩家數據的存儲服務器

對玩家數據進行數據廣播和同步網絡

把一部分遊戲邏輯在服務器上運算,作好驗證,防止外掛。架構

針對以上的需求特徵,在服務器端,咱們每每會關注對電腦內存和CPU的使用,以求在特定業務代碼下,能儘可能知足承載量和響應延遲的需求。最基本的作法就是「空間換時間」,用各類緩存的方式來以求得CPU和內存空間上的平衡。框架

在CPU和內存之上,是另一個約束因素:網卡。網絡帶寬直接限制了服務器的處理能力,因此遊戲服務器架構也一定要考慮這個因素。異步

2.遊戲服務器架構要素tcp

對於遊戲服務端架構,最重要的三個部分就是,如何使用CPU、內存、網卡的設計:

內存架構:主要決定服務器如何使用內存,以最大化利用服務器端內存來提升承載量,下降服務延遲。

邏輯架構:設計如何使用進程、線程、協程這些對於CPU調度的方案。選擇同步、異步等不一樣的編程模型,以提升服務器的穩定性和承載量。能夠分區分服,也能夠採用世界服的方式,將相同功能模塊劃分到不一樣的服務器來處理。

通訊模式:決定使用何種方式通信。基於遊戲類型不一樣採用不一樣的通訊模式,好比http,tcp,udp等。

 

2.服務器演化進程

(1)卡牌等休閒遊戲弱交互遊戲

服務器基於遊戲類型不一樣,所採用的架構也有所不一樣,咱們先講一下簡單的模型,採用http通訊模式架構的服務器:

 

 

這種服務器架構和咱們經常使用的web服務器架構差很少,也是採用nginx負載集羣支持服務器的水平擴展,memcache作緩存。

惟一不一樣的地點不一樣的在於通訊層須要對協議再加工和加密,通常每一個公司都有本身的一套基於http的協議層框架,不多采用開源框架。

(2)長連接遊戲服務器

長連接遊戲和弱聯網遊戲不一樣的地方在於,長鏈接中,玩家是有狀態的,服務器能夠時時和client交互,數據的傳送,不像弱聯網通常每次都須要從新建立一個鏈接,消息傳送的頻率以及速度上都快於弱聯網遊戲。

相關文章
相關標籤/搜索