遊戲開發經驗總結:分散式架構、資料庫與進程設計
如果把遊戲看成一輛賽車,那麼,遊戲開發在其中扮演著至關重要的發動機角色,控制著玩家所感知到的劇情、關卡、實時社交溝通、版本更新、兼容和性能等問題;而運維則充當了決定賽車生死的安全剎車,不管是端游、頁游還是手游,能否扛住卡頓、宕機與 DDoS 攻擊等都離不開運維的支持。但開發者往往在突破核心玩法、保障運維質量、抵禦惡意攻擊等方面,會遇到諸多挑戰。
提供雲端技術支持 騰訊雲遊戲解決方案概述
來自騰訊雲的騰訊遊戲雲解決方案架構副總監王璋,從遊戲業務雲上最佳實踐和案例入手,深度剖析了遊戲開發面臨的技術挑戰,以及騰訊雲在遊戲行業提供的各種解決方案,與一眾參會者探討如何尋找適合自身業務的遊戲雲方案。
遊戲開發面臨的技術挑戰?
王璋首先介紹到,過去一年,遊戲開發者最關心的問題主要包含加速 + 專線、攻擊、遊戲語音、IOPS+PPS 以及 Hadoop+AI 大數據分析等,這也是當前遊戲開發者比較頭疼的幾個方面,基於這些問題,騰訊雲提供了系列通用解決方案。
騰訊雲遊戲行業技術解決方案
網路加速
玩家到服務端的加速,尤其是跨國加速更多的還是由玩家去購買迅游、網易等提供的加速器產品,為降低玩家體驗遊戲的門檻,提升玩家的體驗,騰訊雲提供兩套方案來實現服務端解決跨域長距離傳輸網路質量問題。
如下圖為騰訊雲的「遊戲加速家架構(一)」,具體實現方式為在玩家所在的區域與遊戲伺服器之間架設一條專線通道構建起對等網路,通過專線鏈路為玩家提供上下行穩定可靠的訪問體驗。當然這套方案需要遊戲開發者在玩家和伺服器所在的區域搭建兩個代理集群,用於上下行流量的轉發,有一定成本開銷,同時對於已經在線運營的業務涉及到玩家請求 IP 地址的變更。
另一套方案,業務的改造成本較低,即保持原有 RS(Realy Server) IP 地址不變,新增其他區域的 LBS IP 地址與映射 RS 映射,公網 IP 所在的網關集群與 RS 間為專線鏈路,實現一台 RS 通過多個公網 IP 輻射到不同的地域。比如,RS 在香港,國內的玩家可分別從騰訊雲華北、華東、華南 Region 的 LBS IP 上行,走專線到 RS,韓國、日本、新加坡區域的玩家也同樣可以就近通過本地的 LBS IP 上行訪問 RS 的服務。
安全防護
除了加速解決方案,騰訊雲在網路攻擊的安全防護上也提供了多套方案來對抗不同特點的攻擊,包括超大流量攻擊對抗方案、精細化攻擊對抗方案、棋牌遊戲攻擊對抗方案等等。以超大流量攻擊對抗為例,業務遭受攻擊時長占業務在線時長其實不大,所以業務的常態服務可以通過體驗較好的 BGP 網路提供,並且 BGP 可以提供百 G 規模攻擊流量的清洗,超出百 G 的攻擊 BGP 的清洗成本會直線上升,因此會通過騰訊雲提供的中間域名將流量自動調度到三網出口進行超大攻擊流量的清洗。
其他場景的應用探索
除了上述解決方案,騰訊雲針對遊戲業務的痛點,還在嘗試其他解決方案的探索,比如全球支付、遊戲智能客服、遊戲營銷安全等。以遊戲智能客服為例,玩家在遊戲中遇到的問題大多是相似的,通過對知識庫數據的分析,實現在線自動應答,依靠騰訊海量的用戶標籤數據,和優秀的演算法,訓練出真正智能的客服,遊戲都可以通過智能客服解答玩家的疑問,提升玩家問題的處理效率和遊戲本身的體驗。
騰訊遊戲海量服務架構構建之路
網路遊戲和其他互聯網服務一樣,需要面對承載海量服務的壓力,同時還需要滿足遊戲所要求的低延遲、高業務邏輯複雜度特性。來自騰訊遊戲研發部資深架構師韓偉,基於騰訊遊戲的海量架構構建經驗,為大家分享了遊戲海量服務的架構特徵、核心模塊以及彈性能力的實現手段等技術內容,為遊戲開發者在面對海量用戶時提供了一些借鑒思路。
分散式進程框架構建
現在的騰訊遊戲,包括業界其他很多遊戲,如魔獸世界等大多使用的是跨伺服器,所以現在遊戲伺服器端的趨勢是全面的分散式系統。相較於古老的遊戲架構,分散式系統,具有方便部署到不同機器、更精細的負載均衡單位以及便於監控和問題定位等優勢,更加符合閑雜用戶對遊戲系統的體驗要求。
下圖是騰訊雲的分散式集群架構圖,主要包括接入進程和邏輯進程。左邊是客戶端,騰訊有一些接入進程,主要是處理網路連接,把這些網路連接的數據做初步處理之後,再放到邏輯進程進行分析。有可能這個邏輯進程並不是自己的進程,因此可能還會轉發到別的邏輯請求,最後給客戶端回應,也有一種情況是遊戲需要多個回應,即一對多的請求,這個時候整個過程需要由多個進程同時滿足,不同的客戶端可能連接在不同的進程上面。
不管是接入進程還是邏輯進程,都需要統一的集群中心來管理,集群中心是所有集群管理的最核心的節點,用來管理多進程的模型。可以看到,如果將整個集群看成一個單位的話,每一個進程其實都可以方便的部署到不同的機器上去,通過集群中心,進程之間也可以知道對方的信息、收發數據,然後合理的將進程分布到不同的機器上,提高整個集群的容量。
那麼,騰訊雲是如何構建這樣一個分散式的集群系統的?韓偉提到了兩個關鍵點:分散式通信和緩存系統。
分散式通信:現在分散式通信基本上都會使用到消息隊列技術,騰訊的消息隊列有一個特點,每一個消息的收發端都是一個消息隊列服務。這個消息隊列服務的收發端只收取自己相關的數據,這種方式可以明顯減少消息列隊在中轉過程的傳遞時間。另外,騰訊雲也會採用自定義路由的方式,由客戶端根據需求選取合適的路由方式,靈活配置集群中心的地址。
分散式存儲:分散式存儲的核心要點為持久化和緩存兩大塊。接入代理在接到請求後,會帶上一個數據片,包含數據來源等相關信息,用以做數據的追蹤和留存;在緩存方面,邏輯進程負責承載玩家所要讀寫的數據緩存,按照騰訊遊戲運營標準,玩家丟失數據的時間不能超過十分鐘,因此,騰訊雲會做一個定時自動回寫的代碼,每十分鐘自動回寫一次,防止數據丟失。
這套系統每個進程之間的鏈接看起來比較複雜,但是實際上這個複雜性被一套通用的分散式通信消息隊列所接管,開發者只需要了解這個集群裡面有什麼樣的服務,並不需要自己管理這個複雜性進程,因此,這一整套系統的開發和維護上並不困難。
海量伺服器運維實踐
那麼,這套分散式系統是如何做運維的呢?首先騰訊雲會從部署角度搭建一個雲服務平台,做整個集群的進程部署、進程監管等工作這個平台軟體會把所有的功能劃分成一個個集群,這個裡面的節點數量非常多;因此,騰訊雲也配套搭建了一套計算能力伸縮平台,根據需求進行自動的擴容和縮容的操作;對於服務介面的定義,系統有服務的綁定、服務的發現才能做服務對接,所以在分散式開發框架之外,也會配置服務管理系統;最後是基礎運營服務平台,包含一些非功能性的能力,比如可以輸出標準的日誌,輸入標準的監控指標等,這個平台主要是支持一些運維的操作。
韓偉最後向現場觀眾透露道,騰訊研發部已經將部分跟遊戲邏輯關係不是特別緊密的服務都做成了雲平台,比如儲存方面,王者榮耀採用這套雲平台的儲存的同時,全民突擊也會用這個存儲系統,這樣能夠極大的提升運營效率以及運維效率。
「吃雞」類遊戲架構分析
今年從 3 月份開始吃雞遊戲一直佔據遊戲話題排行榜首位,隨後,國內的廠商也開始進行這類遊戲的開發,據統計,吃雞「」類遊戲的全球銷量超過 3000 萬份,同時在線超過 240 萬,連續 43 周蟬聯 Steam 周銷量榜冠軍。那麼,這樣一個火爆遊戲的背後,其遊戲架構是怎樣的呢?並針對「吃雞」類遊戲在反外掛、加速、安全等方面的需求,有什麼樣的解決方案?來自騰訊遊戲雲資深架構師賀廣平,就「吃雞」類遊戲架構和相關解決方案做了詳盡的分析。
「吃雞」類遊戲的架構分析
下圖為一個「吃雞」類遊戲完整的架構圖,這裡,lobby 和 DS 服務架構用作全球部署;安全方面有 DDOS 防護和 TP 反外掛方案,其中,TSS(tencent security system) 是騰訊的反外掛系統;XMMP 是即時通訊系統,負責信息的傳遞;TC 為騰訊充值系統 -IDIP。
整個系統看起來比較複雜,但開發者實際上只要關注兩塊,左邊的遊戲登陸模塊和右邊遊戲服相關模塊。
相關性能解決方案介紹
整體來看,「吃雞」 類遊戲是多人同時在先遊戲,兼之全球同服的特點,整個架構有四大要求和特點:高並發、低延遲、反外掛以及遊戲語音,騰訊雲在這四方面也提供了相應的解決方案。
高並發解決方案:吃雞」 類遊戲的特點是同一地圖會有 100 人以上同場競技,需要服務端有高並發包量的處理能力和大流量吞吐能力。騰訊雲採用的解決方案是高主頻 +SSD 雲盤 + 多隊列 + 智能網卡的方式,提供高 IO 雲伺服器以及高可用雲資料庫,應對激增、高並發、海量訪問需求。
低延遲解決方案:多人實時競技,需要保證每個玩家的網路延時和穩定性要求,騰訊雲在全球共用 Lobby,統一管理和調度全球各地區伺服器,如下圖,在網路堵塞的情況下,A 地域玩家可以通過加速代理直接訪問 C 地域 lobby 服務。
反外掛解決方案:外掛已經嚴重影響到遊戲的平衡,尤其在「吃雞」類遊戲中更加泛濫,一套強大反外掛系統保證遊戲穩定運營,TP 反外掛系統是騰訊自主研發的一套安全系統,通過增加客戶端代碼加密、外掛特徵掃描、動態代碼驗證等措施,實時保障遊戲不受外掛、木馬侵害。其系統框架如下圖所示:
遊戲語音解決方案:競技類遊戲需要通過語音來指揮組內其他同伴的戰鬥,陌生玩家可以語音直接互動,也通過聲音判斷其他玩家的位置。下圖為騰訊雲的 TMG 遊戲語音框架圖,其 3D 音效技術,利用「頭部關聯傳輸函數」(HRTF 演算法),對雙耳之間的時間差異和頻譜差異進行建模,形成有聲源方位感的聲音。同時使用採樣混響方式填補 HRIR 缺失的環境反射聲,從而構建完整的聲場模型。比如在一個小房間里,不僅可以聽到兩個人之間的對話,還可以聽到聲音從牆壁中反射的效果,增加沉浸感。
目前,基於遊戲開發引擎(例如 Unreal、Unity)實現的 3D 音效在遊戲中的應用已經非常普遍了,通過遊戲引擎模擬重現空間中聲源方位,例如 CS 中射擊的槍聲、中彈時的音效、附近敵人輕微的腳步聲,可以顯著提高遊戲的沉浸感,造就身臨其境的遊戲體驗。
三七互娛遊戲上雲的現狀與未來
三七互娛開發和運營了多款成功的遊戲,從《永恆紀元》到《大天使之劍》等,在遊戲開發和運維領域有著豐富的經驗和心得,三七互娛運維總監龔宏績,從三七互娛實際業務情況出發,分享了對遊戲現狀及未來的一些看法和思考。
龔宏績認為,未來互聯網企業只有兩種存在方式:大數據和安全,而雲是大數據和安全的完美結合體,也可能當下甚至未來很長一段時間唯一存在的形態。傳統遊戲企業在做開發和運維的時候,往往會面臨區域性或者跨區域網路構建與管理、全面的系統和業務監控告警、安全事件甄別處理、大量日誌收集分析處理等問題,而雲,恰好能幫助解決這些事情。
雲計算包含網路物理的 IaSS 基礎設施即服務、系統容器的應用服務的 PaSS 平台即服務,在產品的自動擴容、虛擬化和數據高度集成等方面提供了一套完整的解決方案。在運維方面,傳統互聯網企業的運維可以分為三個階段:標準化、自動化和服務化。國內的大多數企業,基本上分都處於前面的標準化和自動化兩個階段,而國內的一些雲服務供應商如騰訊雲、阿里雲等,已經走到了服務化階段,這些企業基於自身業務的同時,也開發了一套比較成熟的產品做成服務。
現場,龔宏績也表示,現階段企業上雲並非完美無缺,包括三七互娛在內,大多數的遊戲企業在公有雲成本的管理、以及用戶數據安全保障等方面都遇到了比較大的挑戰,這也是現今雲廠商一直在需求解決之道的方向,也將是未來雲領域的技術趨勢之一。
演講最後,對龔宏績對雲技術的發展給出自己的思考:不管是大數據還是安全,從商業的角度來說,未來的技術和產品發展趨勢必然是一個用戶為中心的世界、一個數據驅動產品的世界、一個生態協同的世界,這是無可置疑的。
直播 + 遊戲 騰訊雲線上知識競技方案詳解
最近一段時間,「直播答題」已席捲互聯網。王思聰力推《沖頂大會》、周鴻禕的花椒直播上線《百萬作戰》、今日頭條 & 西瓜視頻推出《百萬英雄》、映客在線答題《芝士超人》、一直播的《黃金十秒》……彷彿一夕之間,眾多互聯網直播版《開心辭典》冒了出來。在遊戲行業競爭如此激烈的背景下,知識為何能競技異軍突起,成為直播行業又一風口。來自騰訊雲 P2P 直播解決方案負責崔立鵬,分享了「沖頂大會」背後的商業邏輯和技術實現。
沖頂大會背後的商業邏輯
沖頂大會的規則非常簡單,用戶參與直播答題,留在最後的用戶可以角逐當期獎金。這些直播答題的題目範圍涉及很廣,每次活動共 12 道題,規則 10 秒中之內未答題和答錯題都將被淘汰。
那麼,這樣一款直播競技遊戲為何如此快速火爆?崔立鵬從拉新促活、 廣告分成、以及互聯網直播內容升級三個角度給與解答。遊戲商可以通過極低的成本獲取大量的用戶數據和用戶畫像;其次,問題的設置面非常廣泛,涉及天文地理歷史科學娛樂影視音樂詩歌禮儀等,遊戲商極易通過提問的形式為廣告方「悄悄」植入廣告;最後,是互聯網直播的升級,過往大多直播是以主播為主導,用戶通過留言互動,而這類知識競技直播,更多的以用戶為主角,極大的提高用戶參與度。
崔立鵬表示,沖頂大會只是直播 + 遊戲的一個小小起步,接下來,將有更多類似的遊戲以直播的方式,進行轉型升級,帶來新一波的玩法。
直播競技的技術痛點和解決方案
之前說到,沖頂大會是多人同時在線遊戲,同時,在題目顯示 10S 之內,用戶必須給出問題的答案,因為,這類競技節目的最大痛點是高並發和直播延遲。試想在網路卡頓時,主播拋出問題後,而其他地域的終端用戶沒有及時同步到信息,那麼,他極有可能因為網路問題而被 Pass 掉,這對用戶來說是一個致命的體驗打擊。
騰訊雲基於上述問題提供了業內首家線上競技的完整解決方案,如下圖所示,出題方,主持人在演播室,將信息通過 IM 系統推到騰訊雲平台,加上騰訊雲自己的播放器就實現播放,在直播這方面一個鏈條已經形成了;同時,在導播台,有一個簡單的答題後台,後台提前錄製好了題目和單,放一個屏幕可以看到這個題目的,主持人說請聽題,導播在 SDK 通知時間匹配後顯示題目,然後通過騰訊雲消息通道向全網下發。
題目雖然下發了,但其實不能排除題目和視頻之間是很精準同步的,這方面,騰訊雲做了比較精準的時間同步,即在流處理過程中加一個 timestamp,現場發題的時候也加一個標準時間,這兩個時間設置同步狀態,隨後在播放時,將視頻的音頻和視頻時間解析出來,這樣能夠實現比較好的同步。
※阿里巴巴正式開源自研動態非侵入AOP解決方案:JVM-Sandbox
TAG:InfoQ |