您的位置:首頁>遊戲>正文

韓偉:解謎騰訊遊戲海量服務架構

更多騰訊海量技術文章, 請關注雲+社區:https://cloud.tencent.com/developer

網路遊戲和其他互聯網服務一樣, 需要面對承載海量使用者的壓力, 同時還需要滿足遊戲所要求的低延遲、業務邏輯高複雜度的特性。 騰訊遊戲研發部資深架構師韓偉為大家帶來了“解謎騰訊遊戲海量服務架構”的主題分享。

韓偉

對於遊戲開發者來說, 全區的好處在於開服合服很簡單。 這個簡單體現在三點。 第一是把兩個伺服器合在一起導入並且合併資料, 第二是負載均衡, 運維操作比較簡單。 第三點就是有穩定性, 全區架構中的所有伺服器都是玩家的備份伺服器, 只要架構有足夠彈性, 就可以在一部跟伺服器出故障的情況下使玩家不受影響。

韓偉講解到, 全區架構的核心就是要有分散式的設計和實踐, 而分散式系統的門檻就是通信和緩存。 因為多個進程之間的相互協作就需要一個很好的通信機制。

此外, 由於遊戲服務是一個帶狀態的服務, 它的進程裡面往往是存有很多資料而且玩家會頻繁發出指令, 延遲要求十分苛刻, 但問題就在於很多機器、進程之間的記憶體是不通的, 要讓它們協調運作就需要考慮到緩存的事情。

韓偉接著介紹了騰訊雲對於遊戲的分佈進程集群圖。 在集群圖中, 不管介入進程也好, 邏輯進程也好, 都是在一個統一的集群當中。 在騰訊的實踐當中, 有的項目使用這個來充當集群中心, 即由一個集群中心管理。 有了集群中心, 集群進程之間才能互相知道後面有哪些服務, 該發給誰, 或者任何一個邏輯進程只負責某一個功能。 當然, 騰訊還有別的集群方案, 比如區域中心化的管理系統,

在這個集群中, 每一個邏輯進程其實都相當於小的集群中心, 它們會自己相互協調。 它們當中的任意節點都能夠充當這個集群中心的管理。 在騰訊的實際運營中, 我們發現, 把進程放在不同的伺服器上運行, 可以達到負載均衡。 因為如果機器本身能力強大的話, 可以把一些不同功能的服務拆分到不同進程中。 所以如果某個進程出現問題, 可以在代碼層面很快得知哪一塊可能是有問題的, 不用在全功能的代碼裡排查問題。

接下來, 韓偉介紹了騰訊雲的分散式通信, 雖然都是運用訊息佇列技術, 但和現在的分散式通信不同的是, 騰訊的訊息佇列不一定有一個訊息佇列服務的進程, 而每一個消息的收發端可能都是一個訊息佇列服務,

這樣可以明顯減少50%的傳遞時間。 騰訊攻破的另一難點就是資料儲存。 騰訊的分散式儲存系統可以達到負載均衡。 當主機斷了時, 可以很快切換到熱備機上, 資料也不需要準備, 因為每個資料儲存其實都是同步的。

對於第二個門檻——緩存, 韓偉指出最大的問題就是有異常, 比如有邏輯根據用戶端計算下來的結果, 就不能訪問原來的進程, 可能訪問到別的進程上面去。 而騰訊雲的伺服器集群之間, 邏輯進程還是會按照正常的雜湊結果, 把這個資料轉化給有緩存的地方, 這樣對於用戶端來說, 就相當於連接哪個都是相同的, 只是連接錯誤的延遲會稍高一些。

歡迎閱讀原文, 下載現場PPT乾貨!

Next Article
喜欢就按个赞吧!!!
点击关闭提示