本周閱讀了老師推薦閱讀的公眾號:架構師中的推文《游戲服務器的架構演進(完整版)》,感想如下:
王者榮耀,年輕人必玩的兩個游戲之一,游戲是類dota手游,游戲中的玩法以競技對戰為主,玩家之間進行1V1、3V3、5V5等多種方式的PVP對戰,還可以參加游戲的冒險模式,進行PVE的闖關模式,在滿足條件后可以參加游戲排位賽等。
其峰值大約平均每天在線人數將近300萬人,而日活躍量高達750萬人,這就意味這王者榮耀的服務器需要同時支持這么多人進行對戰,進入游戲時,我們發現,需要進行選擇游戲大區,QQ區還是微信區,IOS端,還是安卓端,通過這樣幾次分類,已經使得服務器盡量變得均衡,而進入游戲選擇區服時,我們發現,基本每個區都有200個以上的具體服務器,這就使得服務器變得更加均衡。
眾所周知,游戲服務器端,是一個會長期運行的程序,並且它還要服務於多個不定時,不定點的網絡請求。所以這類軟件的特點是要非常關注穩定性和性能。這類程序如果需要多個協作來提高承載能力,則還要關注部署和擴容的便利性;同時,還需要考慮如何實現某種程度容災需求。
那么服務器端架構設計需要注重些什么呢?文章中提到的,CPU、內存、網卡的設計,文章中提到:
內存架構:主要決定服務器如何使用內存,以最大化利用服務器端內存來提高承載量,降低服務延遲。
邏輯架構:設計如何使用進程、線程、協程這些對於CPU調度的方案。選擇同步、異步等不同的編程模型,以提高服務器的穩定性和承載量。可以分區分服,也可以采用世界服的方式,將相同功能模塊划分到不同的服務器來處理。
通信模式:決定使用何種方式通訊。基於游戲類型不同采用不同的通信模式,比如http,tcp,udp等。
首先,內存不是我們考慮的主要問題,因為現在我們的所有設備,都處於內存過剩狀態,其次,通信方式也不是我們應該考慮的問題,4G網絡,哦不,哪怕是3G網絡,已經足以支持大部分網絡游戲的正常運行,我們需要考慮的還是服務器端的邏輯架構。
以前我們的游戲,第一代卡牌類休閑游戲,由於是弱交互游戲,那么對流量的需求不是很大。再到第二代網游服務器,電腦與網絡的普及使得我們越來越多的人接觸到了互聯網,而互聯網游戲也因此得到了發展,此時的服務器架構主要采用而是分服模型。
而分服雖然可以解決服務器擴展的瓶頸,但單台服務器在以前單線程的方式來運行,沒辦法充分利用服務器資源,遇到跨服戰便無法進行。
此時第三代服務器端架構應運而出,一般地,我們可以將一個組內的服務器簡單地分成兩類:場景相關的(如:行走、戰斗等)以及場景不相關的(如:公會聊天、不受區域限制的貿易等)。經常可以見到的一種方案是:gate服務器、場景服務器、非場景服務器、聊天管理器、AI服務器以及數據庫代理服務器。
通過這種類型服務器架構,因為壓力分散了,性能會有明顯提升,負載也更大了,包括目前一些大型的 MMORPG游戲就是采用此架構。
以上便是本篇文章基本所介紹的游戲服務器端架構的發展歷程,我覺得自己收獲很大,閱讀了很多知識,基本對服務器端的架構發展有了了解,深深感覺到自己的知識遠遠不夠。會更加努力的學習。
