《江湖X:汉家江湖》游戏论剑系统技术全解析
系統簡介
我們在《江湖X:漢家江湖》系統中設計了一個每晚9點-10點的論劍系統,它的核心是一個帶實時BAN/PICK的服務端自動計算的RANK框架。
如圖:
?
根據雙方分數匹配上之后,雙方輪流進行BAN人、選人。最后服務器計算自動戰斗,并且下發錄像,雙方進行播放。
我們使用服務器組架構,當下的峰值數據大概是單服同時在線1萬人,一個小時內觸發的戰斗量級可達數十萬場。我們的戰斗參數非常復雜,整場戰斗在一臺I7的PC機上計算約需要3-4秒,吃滿一個core。所以這種量級的處理,放在單臺服務器上是非常不科學的,估計同時一百人戰斗就可以隨便down掉這臺服務器。
我們的設計目標是世界同服,所以需要一個架構來支撐理論上無限擴展的用戶并發量級,所以在此設計一個分布式的處理架非常重要。
今天給大家分享一下,我們是如何設計和實現這套系統的。
漢家江湖的服務器組結構
先說一下設計前提:漢家江湖使用的是基于redis為核心的服務器組架構。一個邏輯服務器的實體下掛接了若干臺ECS、DB、redis,以及一臺雙備的索引服務器。這樣是為了提高同服在線玩家數和服務器穩定性,不了解的玩家可以看我們這篇文章:
兩萬人在線服務器架構和一些公有云使用心得(兩萬人在線服務器架構和一些公有云使用心得)
分布式的論劍計算系統
然而我們希望論劍系統是獨立于服務器組之外的,也就是未來可以實現跨服務器組的論劍交互。所以我們給該玩法系統設定的是一個完全獨立的玩法系統
1、系統架構
?
其中proxyServer可以認為是來自于不同服務器組的ECS實體,直接處理與客戶端長連接的session。
其中各個名詞解釋如下:
1)Client 指unity游戲客戶端;
2)RankProxy:Rank客戶端在服務器上的代理,指當前的游戲服(SCUT SERVER),由于是世界服的,所以游戲服只充當代理角色;
3)RankDb 指RANK相關的數據庫,同一個RANK群落(跨服戰斗)指向同一個RANK數據庫;
4)ComputeNode:RANK的計算節點,指一臺服務器上部署的用于計算RANK戰斗結果的程序;
5)RankComputeCluster:指ComputeNode的集合。
6)MatchServer配對服務器,一個Rank群落只有一個實例。
7)MessageBus:消息總線,提供訂閱/發布接口,實現松耦合的分布式通信機制
2、功能要點:
·?RankProxy
·?接受終端用戶的所有行為(登錄、登出、匹配、BAN/PICK、查詢等)
·?與終端用戶交互
·?RankDb
·?一個RANK DB集中存儲一個RANK群落的所有數據(從部署架構來說,我們可以實現同一區內的RANK戰斗、甚至是跨大區的RANK戰斗,區別只是在于RankDb)
·?RANK DB自身高可用
·?ComputeNode
·?集群計算(可以以集群的方式接受任務,任務可以分步到各個節點去分別計算)
·?冪等(任何一臺實例計算結果一致,并且不會重復計算)
·?MatchServer
·?RANK匹配配對
·?主動清理過期RANK
·?為了防止單點故障,其自身應該是高可用的
·?各個服務器應該都是無狀態的
·?原因是支持客戶端斷線重連,而客戶端連接是根據網關路由分配RankProxy的,所以這里要求連到任何一個RankProxy都可以繼續流程
·?MessageBus、MQ
·?見消息總線說明
3、業務時序
?
帶顏色部分為使用消息總線通信
1)橙色部分使用MessageBus
2)綠色部分使用MQ
4、消息總線
我們使用互聯網中間件來實現各個分布式模塊的通信,以及分布式計算的集群消費模式。同時使用以下兩種方案:
MessageBus
MessageBus使用redis的發布/訂閱作為服務器間的實時通信信道,QQ號拍賣平臺所有的通信均采用廣播,根據業務屬性,該廣播信息為一次性的(可丟棄)。每個服務器根據自己的需要過濾消息。
MQ
戰斗計算任務由于占用大量的CPU計算資源,我們需要搭建計算集群。使用阿里云MQ提供的集群消費模式,保證數據下發到一臺計算節點。
成果
《江湖X:漢家江湖》上線近2個月以來,我們以彈性的云計算資源實現了峰值DAU10萬用戶規模的論劍,并發上千場戰斗計算,一小時內十萬級別的計算規模。在僅1個程序員維護服務器系統的情況下,保證系統穩定運行。
其中云服務器提供商(阿里云)出過幾次MQ和Redis的BUG,導致我們的系統紊亂之外,沒有任何運營事故。并且此框架未來足以支撐更大量級的用戶,目前來看其理論瓶頸在于基于redis pub/sub的消息總線(MessageBus)的IOPS,未來需要的時候可以在這個點做基于業務邏輯的水平拆分。
總結
以上是生活随笔為你收集整理的《江湖X:汉家江湖》游戏论剑系统技术全解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《江湖X:汉家江湖》两万人在线服务器架构
- 下一篇: 大牛唐健,带你领略游戏服务器与后台架构的