遊戲伺服器架構概要
宣告:本筆記內容源自騰訊遊戲學院遊戲伺服器開發課程第二節
格式有些亂,有興趣的可以看原文連結 https://www.cnblogs.com/OctoptusLian/p/9408602.html
一、伺服器架構概念解析
1,什麼是“伺服器架構” 對伺服器軟體&硬體&執行的一體化規劃
框架結構:分層分塊。
構建技術選擇:程式語言;通訊方式;儲存技術。
執行質量:執行環境;部署工具方法;更新方案。
二、案例講解:分散式服務架構設計演講——MMORPG(大型多人線上角色扮演)《軒轅傳奇》
伺服器架構_分割槽多世界
1,運營視角
世界與世界是隔離的
世界之間的互通方式:跨服、轉服、合服
2,運維視角
SET部署:每開一組服就增加一組機器,部署一套程式。
3,客戶端視角
TCLS元件:顯示所有伺服器列表。
4,伺服器視角
一組服:一套程式。
軒轅伺服器為什麼要這麼多程式和機器_多維度切分
1,分割槽多世界原型v1
一個大區包含多臺物理機
一臺物理機僅運營一個遊戲世界
一個遊戲世界對應一個遊戲程式
問題:跨世界共享的功能?
遊戲賬號登陸
客戶端版本升級
遊戲大區列表
遊戲賬號資訊
2,公共服分離:將各遊戲世界公共的功能分離部署到公共服上。
問題:公共服的單點故障
“主-備-從”模式:主節點出問題切到從節點(熱切換),從節點出問題切到備份節點。
3,按“接入-邏輯-儲存”分離
分離業務邏輯(不穩定的)與基礎功能(穩定的)
問題:邏輯處理和持久化資料在一個物理機上
DB的檔案IO會拖慢整體系統(百萬級玩家,幾百個G資料)
程式執行中每日輸出大量的日誌(幾個G資料)
物理機故障時DB可能會丟失
4,按重要性分離邏輯計算與持久化儲存的部署
方案:資料庫獨立部署&熱備,log服分離
5,分割槽多世界原型v2
cluster級服務:整個遊戲一組
world級服務:每個遊戲世界一組
各組服均包含接入、邏輯、儲存(DB/DR/LOG分離)
6,繼續分離公共服
公共服 分離“伺服器列表”、“版本升級”、“賬號資訊”等功能
7,切分軒轅邏輯程式
現狀:所有的雞蛋都在一個籃子裡
所有玩家都在一個程式上;
好處:一個特性可以方便地操作到所有玩家;
風險:一個特性的BUG可能會影響所有玩家。
所有特性都在一個程式上;
風險:特性的不斷引入會使該程式穩定性和服務質量降低。
方案:切分xysvr,讓多個scene分別服務於一些使用者,world負責拉取資料。並協調控制多scene。
8,分割槽多世界原型v3
cluster級、world級服務按功能不能切分。
9,如何做切分_參考原則
為可擴充套件性:一組服一套程式;(SET部署)
為可運維性:一組服一套機器;
為可靠性:弱相關的功能可分離;
提高更新便利性:將頻繁更新的部分分離;
按服務重要性切分:如支付系統獨立;
按服務特點切分:接入、儲存、邏輯分離;
切分穩定的(基礎功能)與不穩定(業務邏輯)的。
三、案例講解:面向運營的架構設計
1,接入與負載
多tconnd:分離下行廣播包的壓力。
多scene:可擴充套件性(單服承載人數)。
2,可用性
resume機制
minidump
避免因為coredump導致resume時間過長;
支援輸出出錯時基本上下文:呼叫棧、暫存器。
3,線上控制
reload機制:資源、配置檔案熱載入;
GM系統:管理遊戲執行內容。
4,過載保護
請求頻率控制:按功能模組控制:移動、技能...
DB頻率控制:按業務模組配額;區分優先順序-存檔優先;
邊界情況檢測:某類記憶體分配佔用量超出閥值;某請求/time執行時間過長。
5,DB設計
表格設計:按QQ號分表;簡單列+統一blob格式(meta)
資料升級:旁路程式,自動分批升級。
四、案例講解:旁路服務
版本升級
tcus
支援升級策略:強制、推薦、後臺、預下載、自定義;
支援灰度更新。
tdir
顯示伺服器列表,繁忙程度(參照線上人數)
目錄服務
賬號服務與賬號登擼
角色登入
遊戲過程
運營支援
髒字過濾
驗證碼
五、參考資料
讓我們談談遊戲伺服器開發(上) http://gad.qq.com/article/detail/21401
遊戲伺服器架構演進(完整版) https://my.oschina.net/u/1859679/blog/1438724?p=2
相關文章
- 遊戲伺服器的常用架構遊戲伺服器架構
- Android 元件化架構概要Android元件化架構
- 遊戲架構 遊戲架構設計(8)遊戲架構
- 經典遊戲伺服器端架構概述遊戲伺服器架構
- LollipopGo遊戲伺服器架構--NetGateWay.go說明Go遊戲伺服器架構Gateway
- 阿里雲架構師解讀三大主流遊戲架構阿里架構遊戲
- 阿里雲架構師解讀四大主流遊戲架構阿里架構遊戲
- 【程式設計師的遊戲開發之路】 遊戲架構程式設計師遊戲開發架構
- 通過遊戲學習計算機架構 - embeddedartistry遊戲計算機架構Dart
- 透過遊戲學習計算機架構 - embeddedartistry遊戲計算機架構Dart
- 世界觀架構之射擊遊戲技能設定架構遊戲
- 單體架構、微服務和無伺服器架構架構微服務伺服器
- 自己架設雲遊戲伺服器需要注意什麼?遊戲伺服器
- 無伺服器架構 - CodeCraft伺服器架構Raft
- 用Swoole來寫個聯機對戰遊戲呀!(二)單機遊戲架構遊戲架構
- 實時多人遊戲同步方案:不同架構的對比遊戲架構
- 遊戲伺服器 遠端登入遊戲伺服器工具遊戲伺服器
- 遊戲架構設計——高效能並行程式設計遊戲架構並行行程程式設計
- 遊戲世界觀架構之射擊題材知多少(上)遊戲架構
- 微信玄武大廳小程式房卡遊戲架構搭建遊戲架構
- Steam 遊戲上架指南遊戲
- 伺服器架構圖 伺服器登入方法伺服器架構
- 遊戲伺服器概述遊戲伺服器
- 基於MVVM架構的遊戲App如何整合華為遊戲服務(一)——登入認證MVVM架構遊戲APP
- 【知識分享】 伺服器的架構伺服器架構
- Serverless無伺服器架構詳解Server伺服器架構
- Go遊戲服務端框架從零搭建(一)— 架構設計Go遊戲服務端框架架構
- 基於滴滴雲的棋牌遊戲服務端架構設計遊戲服務端架構
- 探索使用 Golang 和 Webassembly 構建一個多人遊戲伺服器GolangWeb遊戲伺服器
- 什麼是雲遊戲伺服器?如何選擇雲遊戲伺服器?遊戲伺服器
- 遊戲伺服器維護遊戲伺服器
- go遊戲伺服器框架Go遊戲伺服器框架
- Serverless 架構到底要不要伺服器?Server架構伺服器
- sqli-labs———伺服器(兩層)架構SQL伺服器架構
- 裁員、停運、調組織架構 ,位元組遊戲怎麼了架構遊戲
- 快手組織架構再微調,A站劃歸遊戲團隊管理架構遊戲
- Unity《ATD》塔防RPG類3D遊戲架構設計(一)Unity3D遊戲架構
- Unity《ATD》塔防RPG類3D遊戲架構設計(二)Unity3D遊戲架構