遊戲伺服器結構演化
邏輯層和基礎元件層分離
邏輯伺服器是大規模異構分布式系統
國內的遊戲伺服器和國外的最大的區別是在:國內的遊戲的邏輯是跑在伺服器上的,客戶端可能逐漸變成乙個只是顯示表現象的東西,所有牽扯到財產、玩家資料、校驗等邏輯都是放在伺服器上的,因此導致伺服器的邏輯層越來越複雜,單個程序是根本沒有辦法處理的。
什麼是登入系統
玩家通過客戶端和伺服器建立連線,在伺服器各個程序上完成需要的賬號和角色資料建立,並進入遊戲場景開始遊戲的過程稱為登入。
搭建登入系統的裝備工作
由於遊戲不斷的更新,伺服器最終會演化成為乙個大規模分布式系統。不同系統之間的程序也會相互通訊,它們也需要協議。
為什麼伺服器會演化成為乙個大規模分布式系統,以及作為分布式系統,登入在這個系統中的位置,實際上它處於乙個中間層的位置。最底層是元件如接入、訪問資料、日誌記錄等。上層是具體的玩法如副本、競技場等。中間層則是一些處於上下層之間且可以支撐大規模玩法開發,同時向下可以讓整個系統跑起來的類似客戶端引擎,這樣乙個伺服器引擎層的概念。
登入系統的基本流程
使用什麼樣的設計模式來實現登入系統呢?
狀態模式 - 登入狀態機
簡單的登入模型
這裡有乙個問題,這裡為什麼叫做引擎層卻要跟玩法隔離呢?
遊戲伺服器大體分為元件層、邏輯引擎層、上層邏輯層。
簡單的登入流程
簡單的登入流程
頂層狀態機
登入系統的效能問題
伺服器物理效能邊界:流程、cpu、記憶體、db訪問
網際網路實際線上遇到的效能問題:
效能問題例項:集中登入和群體傳遞
開發效率與高可用性
實際專案大規模併發問題
高可用性
總結基礎元件:連線、存檔、日誌
邏輯服務:分布式多程序系統
登入的基本流程和狀態
需要考慮各種邊界情況
四個物理效能邊界,毛刺和雪崩可能的產生點。
100%一定會出問題,控制出問題後的影響範圍。
介面邏輯設計
之前寫dds那部分時,對於spi介面琢磨了好久,當然了,首先想得到的狀態機,控制dds輸出的資料送至後端da。將整個資料傳輸過程分解成四個狀態 idle wr start wr data stop,根據事件猝發每個狀態的跳轉,例如idle wr start的跳轉條件是out en 1,這種設計思想是...
業務邏輯設計
1.action設計 shfwpgdzlbdmanager.copy mannager裡面的相應方法 shfwpgdzlbd.getbdtpid 傳入的引數從哪獲取,型別應和mannager的方法需要的引數型別相同 2.manager設計 設計之前宣告物件 private shfwpgdzlbdda...
分頁邏輯設計
分頁,是每乙個開發者必然會面臨的乙個問題。由於資料量大,不可能全部載入出來放置記憶體中,然後在頁面展示。這種方式的優點 1 簡單明瞭,邏輯清晰。2 實時查詢,資料準確。缺點 io次數太多,每次查詢都要請求兩次sql。增加db壓力 db資源很稀缺,而且每次查詢總記錄數是一次全表掃瞄,進行的是表級鎖 優...