多核的網路遊戲伺服器開發 之 設計目標

2021-05-21 18:53:55 字數 705 閱讀 9262

多核心的開發逐步會成為軟體開發的乙個關鍵領域,單個cpu處理核心的處理能力已經逼近物理學的極限,今後的計算技術,多處理核心必定會成為提高計算能力的不二之選,那麼軟體開發如何能夠適應多核心處理器的需求呢,如何能夠充分利用4核,6核,8核甚至更多核心的處理能力呢?

對於實際的複雜系統來說,如何充分利用多核心的處理能力就是乙個很有意思的挑戰了。我們假設這樣乙個應用場景:

在 mmorpg 服務端架構中,登入伺服器是乙個非常關鍵的角色,簡單來說登入伺服器為遊戲伺服器提供登入服務,多個遊戲伺服器(可能分割槽也可能不分割槽)連線到同乙個登入伺服器,登入伺服器處理遊戲伺服器發來的使用者登入請求,設定其登入狀態,上線下線時間等等。當然,實際的登入伺服器還要處理使用者充值,消費,密碼找回等等請求,為簡化問題,我們首先考慮乙個僅僅實現註冊和登入的登入伺服器。

我們設計的目標 就是乙個能夠在 1 分鐘之內,完成 10萬次登入請求的登入伺服器。

我們將目標分解為下面幾個階段:

1 實現乙個併發連線可能幾千的網路伺服器,可以有多個執行緒從連線中接收和傳送資料,占用盡可能少的cpu

2 實現乙個 記憶體 hash 表,多個處理執行緒訪問這個hash表來設定登入狀態以及驗證密碼

3 實現乙個mysql的後端,需要持續化的資料,首先儲存到資料庫中,保持資料庫和記憶體 hash 一致性

4 mysql 資料庫分成熱表和冷表,將經常訪問的資料存放在熱表中,以應對上億的註冊使用者,幾百萬活躍使用者造成的資料庫訪問效能低下

網路遊戲 伺服器

using system using system.collections.generic using system.linq using system.text using system.threading.tasks using system.net.sockets using system.n...

《網路遊戲伺服器程式設計》

fd clr s,set removes the descriptor s from set.fd isset s,set nonzero if s is a member of theset.otherwise,zero.fd set s,set adds descriptor s to set....

大型網路遊戲伺服器的框架設計

伺服器是用來處理高併發的請求,同時能夠滿足擴充套件的業務邏輯的需求,最重要的是滿足三點 併發性,穩定性,擴充套件性。經歷過兩款上線遊戲產品,見識到了遊戲行業的雜亂無章,雖然和傳統軟體行業相比,少了那麼些規範,但是對個人能力要求還真不比傳統軟體行業低。今天開始,陸續利用業餘時間將自己設計的乙個伺服器的...