抖音云游戲調度優化實踐
概述
云游戲作為一種新興的游戲模式,將游戲的存儲、計算和渲染任務從本地終端遷移至云端服務器,使玩家無需配備高性能的硬件,僅通過網絡實時接收來自云端服務器的游戲音視頻流,即可暢玩各類大作。云游戲突破了設備性能的限制,讓“低配”玩家也能擁有“高配”體驗,但同時也對終端與云端服務器之間的網絡連接質量提出了更高要求。
云游戲技術架構概覽
為了保障云游戲玩家與云端服務器之間的網絡連接質量,云游戲服務提供商通常會在全國范圍內部署多個云端服務器節點。如下圖所示,當玩家發起游戲請求時,調度系統會根據其地理位置、網絡運營商等信息,從眾多候選節點中挑選出一個最合適的,隨后玩家與該節點建立連接并開始游戲。可以說調度系統是連接玩家與云端服務器的關鍵中樞,它就像一位交通指揮員,為每一位玩家規劃出最快捷、最順暢的路徑。一般來講,同省同運營商的節點與玩家之間的網絡連接質量最優。因此,除了用戶體驗評分之外,同省調度率也是衡量調度質量的關鍵指標之一。
云游戲用戶建聯過程
本文回顧了我們在過去一年中圍繞抖音云游戲調度系統展開的一系列思考和優化實踐。具體而言,我們首先設計并實現了一套離線調度模擬器,能夠基于線上數據精準模擬、復現不同調度策略的效果,助力算法的高效驗證與迭代。其次,我們提出一種基于最小費用流的調度算法,力求在資源有限的條件下盡量逼近全局最優調度。線上部署結果表明,我們所提出的優化策略顯著提升了同省調度率與用戶體驗評分。從業務視角來看,這些優化策略帶來了人均游戲時長1~2分鐘的增長,有效增強了云游戲玩家的粘性和整體業務表現。更重要的是,我們構建了一套可持續迭代的調度優化機制,為大規模云服務的調度系統設計提供了重要參考。
背景介紹
現有方法
目前,云游戲調度系統普遍采用基于靜態規則的服務器調度策略,典型方法包括“地理距離優先”和“運營商優先”。簡單來說,就是靠一套預設的規則快速挑選出一個局部最優的服務器節點。以“運營商優先”為例,調度系統通常按照以下優先級為用戶分配節點:同省同運營商 > 跨省同運營商 > 同省跨運營商 > 跨省跨運營商,其核心目的是盡量避免因跨運營商連接所帶來的網絡延遲和不穩定問題。
??示例一
以“運營商優先”為例,假設用戶位于江蘇省,使用的是中國電信網絡,全國的服務器節點如下:
- 廣西 - 聯通節點(跨省跨運營商)
- 湖北 - 移動節點(跨省跨運營商)
- 江蘇 - 電信節點(同省同運營商)
- 河北 - 移動節點(跨省跨運營商)
根據“運營商優先”的調度規則,調度系統首先會為用戶分配同省且同運營商的節點,即江蘇-電信節點。若該節點資源已全部耗盡,系統將依次考慮其他優先級稍低的節點:湖北-移動節點、河北-移動節點和廣西-聯通節點。
說明:因為湖北在地理位置上與江蘇更近,所以湖北-移動節點的優先級要高于河北-移動節點。
這類基于靜態規則的服務器調度策略實現簡單、部署方便,在傳統內容分發網絡(CDN)或短連接類業務中表現尚可。然而,在云游戲場景中就有些“力不從心”了,面對有限的資源,它很難實現全局視角下的最優調度。根本原因在于云游戲與CDN等短連接業務在調度需求上存在顯著差異,具體包括以下三方面:
- 網絡質量要求高:云游戲對網絡連接質量的要求極高,任何輕微的延遲或抖動,都可能轉化為玩家的操作不跟手或卡頓,進而導致游戲體驗的嚴重劣化。
- 并發服務量低:在CDN這類短連接場景中,一臺服務器通常可并發服務數百甚至上千名用戶。但云游戲就不一樣了,服務器需要為每位玩家單獨完成游戲畫面渲染與編碼,資源開銷極大,單臺服務器并發服務2至3人就已經接近極限。
- 連接持續時間長:CDN的請求就像“打個醬油”——加載個網頁、播個視頻,可能持續幾秒鐘就搞定了。而云游戲是“長期作戰”——用戶一旦接入服務器就會持續連接數十分鐘甚至數小時。這意味著,調度系統一旦在開始時為玩家分配錯服務器,就會導致該玩家在整個游戲過程中體驗持續受損,甚至還可能連累到后續玩家的調度,出現更嚴重的問題(參考示例三)。
面臨的挑戰
當然,哪怕有一套規則在手,想在抖音云游戲業務中把調度這件事做好,也遠不是件容易的事。首先,全國范圍內部署的云端服務器資源有限,且在各省之間分布極不均衡;其次,不同位置的玩家即使連接相同的服務器,所獲得的體驗評分也存在顯著差異,進一步加劇了調度決策的復雜性。最后,不同時段發起的玩家調度請求數動態變化,對調度策略的適應性提出了很大挑戰。基于對大量調度數據的分析,我們將當前抖音云游戲調度系統存在的核心挑戰歸納為以下兩點:
云端服務器資源分布圖
用戶需求分布圖
服務器資源分布不均,與用戶需求不匹配。理論上,各省的云端服務器資源應與本地用戶規模相匹配,這樣才能在地理位置上盡可能實現就近調度。然而現實往往不盡人意,受限于機房建設成本、帶寬容量與場地等因素,當前的服務器資源在全國范圍內呈現明顯的不均衡分布。如上圖所示(左圖為各省的云端服務器資源數,右圖為各省的用戶需求分布。請注意,所有數值均已按重慶資源總數進行了歸一化處理),可以明顯看出廣東、江蘇等東部沿海省份具備相對充足的服務器資源,而中西部與東北地區則普遍存在資源緊張甚至無資源的情況,迫使大量用戶不得不被調度至外省。進一步對比左右兩圖可以發現,當前的資源供給與用戶需求之間存在嚴重的不匹配,這將顯著提升用戶跨省調度的發生概率。
????示例二
以“運營商優先”為例,假設用戶位于貴州省,使用的是中國聯通網絡,全國的服務器節點如下:
- 廣西 - 聯通節點(跨省同運營商)【資源緊張】
- 湖北 - 移動節點(跨省跨運營商)【資源充裕】
- 江蘇 - 電信節點(跨省跨運營商)【資源充裕】
- 河北 - 移動節點(跨省跨運營商)【資源充裕】
因為貴州本省無資源,所以用戶必須被調度出省。根據“運營商優先”的規則,調度系統會優先將用戶調度至廣西-聯通節點。
靜態規則缺乏全局資源協調能力,易引發資源搶占。基于靜態規則的調度策略主要關注用戶個體的連接屬性(如運營商、地理距離等),缺乏對全局資源供需狀態的協調能力,容易導致跨省資源搶占,嚴重影響整體用戶體驗。此外,基于靜態規則的調度策略未考慮不同地域用戶連接同一節點時的體驗評分差異,難以實現全局視角下的最優調度。更為嚴峻的是,在線用戶數呈現出明顯的波動性,部分地域高峰與低谷時段的在線用戶人數差距可達百倍,進一步加劇了調度難度。
??????示例三
以“運營商優先”為例,假設用戶位于廣西省,使用的是中國聯通網絡。如前所述,基于靜態規則的調度策略會使大量云南、貴州、四川等地的聯通用戶都優先調度至廣西-聯通節點,很容易就把廣西-聯通節點的資源消耗一空。在這種前提下,全國的服務器節點如下:
- 廣西 - 聯通節點(同省同運營商)【資源已耗盡】
- 湖北 - 移動節點(跨省跨運營商)【資源充裕】
- 江蘇 - 電信節點(跨省跨運營商)【資源充裕】
- 河北 - 移動節點(跨省跨運營商)【資源充裕】
此時,哪怕是廣西本省的聯通用戶,也不得不被調度到外省的節點,直接導致廣西用戶的體驗評分大打折扣。這就是靜態規則下缺乏全局協調能力所引發的資源搶占問題——本地用戶反而失去了本地資源。需要指出的是,如果調度規則優先考慮“地理距離”,也會面臨類似的問題,這反映出靜態規則在資源緊張、需求起伏、體驗敏感的業務環境下的局限性。
創新概述
針對上述挑戰,我們從“策略驗證”和“調度優化”兩個方面切入,提出兩項關鍵創新:一方面,我們設計并實現了一套離線調度模擬器,能夠支持調度策略的離線評估與快速迭代;另一方面,我們提出一種基于最小費用流的調度算法,力求在資源受限的條件下實現全局視角下的最優調度。
離線調度模擬器
工欲善其事,必先利其器。在策略驗證層面,我們設計并實現了一套離線調度模擬器,以更高效的解決云游戲調度系統存在的問題,其由三大核心模塊構成:數據處理模塊、策略模擬模塊與結果評估模塊。
首先,數據處理模塊負責讀取用戶調度請求信息(包括時間戳、運營商、地理位置等)、服務器節點信息(如運營商、地理位置、資源上限等)以及用戶連接各節點所獲得的質量信息(如體驗評分、平均游戲時長等),并按時間順序依次重放調度請求,構建與線上類似的調度流程。需要說明的是,為了提升模擬效率,所有調度請求將以分鐘為粒度進行批量處理。接著,策略模擬模塊將根據設定的調度策略為每位用戶選擇最合適的服務器節點,并實時更新節點資源狀態以及用戶連接信息。節點一旦被分配,其對應資源容量會被立即扣減,并在用戶游戲時長結束后釋放,實現對資源狀態的動態更新。最后,結果評估模塊將在所有調度請求模擬完成后計算多項關鍵指標,包括平均用戶體驗得分、同省調度率、資源使用率等,為各種策略的評估與對比提供數據支撐。
總之,該模擬器綜合考慮用戶分布、服務器資源容量以及用戶質量等關鍵因素,不僅可以量化分析不同的服務器部署方案(如節點選址、資源分布)對調度結果的影響,還支持新策略的效果驗證與快速迭代,切實提升調度策略的優化效率。
性能驗證
為評估離線調度模擬器的效果,我們在相同的資源配置與調度策略下,將其模擬結果與線上真實系統的運行數據進行了對比。下表展示了全國及部分省份在兩個核心調度指標——平均用戶體驗評分、同省調度率上的對比情況。其中,藍色為模擬結果,綠色為真實數據。
省份 | 平均用戶體驗評分(模擬) | 平均用戶體驗評分(真實) | 同省調度率(模擬) | 同省調度率(真實) |
廣東 | 4.388 | 4.387 | 75.74% | 74.96% |
福建 | 4.479 | 4.480 | 92.80% | 92.76% |
安徽 | 4.437 | 4.434 | 11.95% | 12.29% |
河北 | 4.492 | 4.489 | 40.65% | 40.56% |
江西 | 4.382 | 4.382 | 15.48% | 15.89% |
全國 | 4.4453 | 4.4433 | 61.29% | 59.65% |
從全國數據來看,平均用戶體驗評分的模擬值與真實值僅相差0.002,誤差極小;同省調度率的差異為1.64%,主要源于線上機房可能存在臨時維護或屏蔽等特殊情況,整體誤差處于可接受范圍之內。
模擬結果與線上結果高度一致,說明所提出的離線調度模擬器具備高質量的仿真性能,為后續調度系統的優化與迭代提供了堅實基礎。
基于最小費用流的調度算法
最小費用流網絡結構
在調度優化層面,我們提出了基于最小費用流的調度算法,將優化目標設定為用戶體驗評分與同省調度率的加權指標,并通過線性規劃方法進行求解以計算在資源受限場景下可實現全局視角下的理論最優調度結果。如上圖所示,我們將每分鐘的調度過程建模為一個單源匯的最小費用流網絡,網絡由三類節點組成。
在該網絡框架下,每位用戶只能被分配至一個服務器節點,且各節點的資源容量有限。值得一提的是,為了全面優化調度效果,我們將優化目標設定為用戶體驗評分和同省調度獎勵分的加權值,確保這兩個關鍵指標共同作用于調度決策。系統以分鐘為粒度,根據當前在線的用戶與節點資源情況,動態求解理論最優調度策略,并計算對應的平均體驗評分和同省調度率,作為該時刻的理論最優值。進一步地,系統將所有時刻的最優結果進行求平均,即可計算出在當前資源配置和用戶負載條件下可實現的理論性能上限。通過對比分析線上實際調度結果與理論最優結果之間的差異,我們能夠識別調度策略的優化空間,并基于此設計新的調度算法,逐步縮小實際與理論最優值之間的差距,從而提升整體調度效果。
實踐案例
資源部署優化
在現有調度系統中,云端服務器資源的空間分布與用戶需求存在明顯不匹配。為了緩解上述供需矛盾,并結合業務方的資源遷移需求,我們基于離線調度模擬器對當前的資源部署情況進行了系統性評估與優化分析,提出一項資源遷移優化策略:將福建省的部分服務器資源遷移至資源緊張的河北省,并保持其他省份的資源情況不變,預期可有效提升用戶體驗評分和同省調度率。
我們使用離線調度模擬器對該遷移方案進行了仿真測試,為實際部署提供數據支撐和決策依據。
模擬結果 vs 線上結果
配置 | 平均用戶體驗評分 | 同省調度率 |
Baseline | 4.4367 | 58.31% |
優化方案模擬結果 | 4.4569 | 63.89% |
優化方案線上真實結果 | 4.4555 | 62.54% |
線上結果表明,資源部署優化后全國的同省調度率提升了4.23%(58.31%->62.54%),這一趨勢與離線調度模擬器中的預測結果基本一致,驗證了模擬器在資源部署評估和優化中的有效性與可靠性。
調度算法優化
為進一步提升調度系統的整體性能,我們圍繞“如何逼近理論最優調度結果”這一核心問題,提出了調度算法優化方案,其包括兩個關鍵步驟:
- 求解理論最優調度結果:使用基于最小費用流的調度算法求解在當前的資源配置和用戶負載條件下可達到的理論最優調度結果
- 計算線上調度優先級策略(以終為始):以理論最優調度結果為目標,反向計算各個省份用戶與各個云服務器節點的優先級,使實際調度行為盡可能逼近最優調度結果,縮小實際體驗與理論上界之間的差距,進而優化整體調度效果。
我們使用離線調度模擬器對優化后的調度算法進行了模擬,以評估其性能。
模擬結果 vs 線上結果
配置 | 平均用戶體驗評分 | 同省調度率 |
Baseline | 4.4006 | 65.61% |
優化方案模擬結果 | 4.4220 | 68.40% |
優化方案線上真實結果 | 4.4229 | 66.85% |
線上結果表明,優化后的調度算法顯著提升了平均用戶體驗評分和同省調度率,證明新算法的有效性。同時,實際結果與離線模擬結果的預測趨勢高度一致,進一步驗證了模擬器的準確性。
總結
本文針對云游戲調度系統中資源分布不均、靜態規則低效等關鍵問題,提出了一套系統性的優化方法論,包括離線調度模擬器的設計與基于最小費用流的調度算法優化。通過資源部署與調度策略的聯合優化,顯著提升了調度效果,線上評估結果顯示,同省調度率和人均體驗評分均有顯著提升。
更重要的是,所提出的離線調度模擬器具備出色的仿真精度與泛化能力,能夠有效預估優化方案的潛在收益,有助于調度策略的快速迭代。這不僅為云游戲調度系統的持續優化奠定了堅實基礎,而且為大規模云服務調度系統的設計提供了重要參考。