前言
在遊戲生态中,主要包含遊戲的研發方以及營運發行方。一款遊戲的運作,分為研發和營運兩個階段。研發的主體有個人、獨立工作室、遊戲研發公司等;
遊戲的研發主體專注于遊戲内容的研發,對遊戲的發行及營運往往在人力、财力上投入不足,促使遊戲發行及營運業務應運而生,産生了獨立的營運發行方。目前市場上很多大型遊戲廠商将自己的發行及營運能力打包給營運發行方。另外還有一些遊戲的分發管道方,依托于自己的流量優勢,也提供僅針對本管道的聯合營運服務。

上圖中有關的互動的部分:
l 遊戲本身的操控互動是在遊戲用戶端與遊戲服務端間進行的,大部分會采用Socket長連結的方式進行通信。
l 遊戲用戶端與遊戲發行方平台的互動,包括登入,支付等等,這些由遊戲玩家主動請求的會采用http的方式進行連結通信。
這兩部分的互動選型相對固定。
但在營運發行方中關于營運消息以及廣告推送等場景,例如各類伺服器運維更新等跑馬燈資訊;賬号踢下線資訊;懸浮窗廣告;普通消息推送等等服務更多是由遊戲的營運發行方主動推送的。在百萬級遊戲客戶的情況下,如何選擇更适合的互動方式是一件頭痛的事情。
我們在本章中探讨如何更好地選擇營運發行消息的技術實作。
營運發行方推送的特點與要求
1.觸達使用者多:一款成功的遊戲總客戶數經常超百萬千萬。同時線上數高。
2.消息的時效性不同:有些消息是在某時間段内都生效的(例如主遊戲服運維更新通知),無論客戶目前的狀态是否線上,如果目前客戶線上那麼就立刻收到,離線的客戶在下次進入遊戲時也會收到相應的消息。有些消息是對于目前線上的客戶(例如賬号踢下線資訊)才有意義。
3.精準的群發性訴求:推送的消息都是對于具有某類特征的客戶群體進行廣播(例如不同的廣告對應不同等級的遊戲玩家)
4.連接配接的輕量級消耗:這類資料的互動對比遊戲本身操控來說,頻率較低,是以遊戲用戶端與廣告營運等資料推送的流量占用的用戶端運作資源盡可能的少。
5. SDK依賴資源簡潔:在遊戲領域裡,由研發團隊會産生遊戲母包,而營運發行方會在母包的基礎上嵌入營運所需要的SDK包,例如支付功能, 資料推送功能;那麼對于推送功能本身所依賴的資源包就越小越好了。
備選的技術方案分析
1. http輪詢方案:
優點:
遊戲用戶端依賴最少,實作友善。
缺點:
無效輪詢占比高:多個用戶端,多種類的輪詢多,鑒于本類消息的頻率不高,那麼絕大部分輪詢都是沒有實際業務意義的。
營運端實作複雜:需要使用額外的代碼邏輯專門維護已讀取狀态。
資源占用高:周邊配套的調用鍊,日志資訊,并發處理能力這些推高了資源占用情況。
2. Socket方案:
遊戲用戶端依賴比較少,實作友善。
連接配接維護:營運方會有不同種類型的應用劃分(例如廣告可能是單獨的應用,系統管理也會是另一單獨的應用),如果都需要推送,那麼就必須有不同的socket連接配接到不同類型的應用;這樣遊戲用戶端的連接配接就會增多,進而占用比較多的資源。
營運端實作複雜:需要使用額外的代碼邏輯專門維護訂閱推送類型,在推送過程中需要代碼實作過濾,精準投遞到目标群體; 為了保證推送的品質(到達與否),需要額外記錄推送狀态;對于推送資料的時效需要額外的控制,有些過期的消息(例如服務運維時間通知)。
3. KAFKA方案:
接入簡單:成熟的消息中間件,支援各種實作語言。隻需要對接Kafka 節點本身,不需要直接與發行方的應用進行連接配接,天然解藕。
功能強大: 推送資料的狀态維護,存儲等都可以借用Kafka的來提供。
用戶端連接配接數支援不足,無法通過簡單的叢集來支援數量衆多的遊戲玩家(用戶端)。
4. MQTT方案:
接入簡單,MQTT的協定非常簡潔,支援各種實作語言。
支援各種訂閱關系。
支援p2p消息。
支援各種消息觸達的QoS品質。
可觀測用戶端的連接配接情況。
支援百萬級的連接配接。
MQTT技術目前階段不如其它方案大衆。
MQTT技術方案
通過對比,上面的三種方案, MQTT方案是非常符合作為遊戲的營運發行方與遊戲用戶端進行推送資料的互動場景。那麼我們來看看這個技術的設計原則。
1、輕量級與高效的微消息,MQTT協定精簡,消息頭特别簡單;
2、基于釋出/訂閱(Pub/Sub)通訊模式,可以進行雙向通信;
3、支援topic進行消息存儲落盤;
4、支援訂閱關系設定;支援p2p的模式與廣播模式;
5、支援百萬級别的連接配接裝置;
6、提供消息服務品質管理;
7、适用于低帶寬、高延遲、不穩定的網絡;
這裡,我們比較一下阿裡雲的産品微消息隊列MQTT與開源MQTT。
結語
在遊戲釋出營運平台中,使用阿裡雲微消息隊列MQTT産品可以滿足營運平台與遊戲用戶端間的資料推送服務場景,即既保證了百萬級連接配接,又實作了資源占用少,也能做到各種複雜的消息資料釋出訂閱管控。
【更多精彩】
1.中間件爆款一折起,還有阿裡巴巴十年最佳實踐深度解密,點選馬上了解:
https://www.aliyun.com/activity/daily/commercial?spm=5176.20960838.0.0.6a54305etoEn4D2.【填問卷領淘公仔】點選馬上填寫問卷:
https://survey.aliyun.com/apps/zhiliao/YmW95Gk8bU【加入行業實戰交流釘釘群】
阿裡雲專門成立了“網際網路架構更新實戰課”釘釘群,每周邀請一位阿裡雲專家在群内進行行業最佳實踐直播,每天分享行業前沿幹貨,釘釘掃碼馬上加入。