8月27日至30日,一年一度的《英雄聯(lián)盟》周年盛典將與廣大玩家共同回憶過往,展望未來。由于多方面因素,本次盛會不支持線下觀賽,但如此盛大的電競盛會怎么能少了各位熱情的召喚師?為此,英雄聯(lián)盟聯(lián)合云開發(fā)為各位玩家打造了一套百萬玩家同時在線的聊天系統(tǒng)——內(nèi)場觀賽區(qū),可供百萬玩家同時在線交流,全面升級線上觀賽與活動體驗,帶給各位召喚師們既是觀眾、又似故事參與者般奇妙的感受!
內(nèi)場觀賽區(qū)互動界面
玩家只需通過宇宙競技場進入內(nèi)場觀賽區(qū)(PC端/移動端均可訪問),即可與進入云開發(fā)與英雄聯(lián)盟聯(lián)合打造的專屬觀賽區(qū),在觀賽區(qū)內(nèi),支持玩家邀請小伙伴或隨機偶遇其他玩家共同欣賞比賽,并能進行實時交流,一起為你喜歡的戰(zhàn)隊打call!
線上觀賽也能“開黑”!
這么一套百萬在線的聊天系統(tǒng),以往需要一定人力、至少一個月以上的時間來打造,而借助云開發(fā),只需1位研發(fā)工程師僅用2-3周就完成了開發(fā)到上線的全流程!
百萬級聊天系統(tǒng)帶來的三大挑戰(zhàn)
首先,需要介紹本次活動的主要場景需求:
1、百萬并發(fā)的在線聊天室
每個虛擬聊天室房間可容納5人觀看比賽,并支持實時互動,包括聊天、發(fā)送表情、動作等交互方式,此外聊天室還設(shè)有戰(zhàn)隊應(yīng)援等模塊。
2、房間匹配
玩家每次進入網(wǎng)頁時,系統(tǒng)都會查詢當前房間的匹配情況。
3、百萬并發(fā)的實時抽獎活動
觀看直播的各位玩家可在比賽的某個時間節(jié)點,點擊頁面中的“寶箱”參與實時抽獎。
上述三個場景面臨的壓力各不相同:
首先,聊天室的場景中,因為涉及聊天信息的存儲和分發(fā),除了對消息推送的實時性考驗外,最大的考驗是對數(shù)據(jù)存儲層的壓力。對于百萬量級的直播場景,比賽的關(guān)鍵時刻往往也是玩家最活躍、進行“刷屏”互動的時候,理論頂峰 100W 的QPS,對后端的存儲壓力無疑是巨大的。
接著,房間匹配場景。正如上文所介紹,進入頁面后第一個邏輯就是查詢當前用戶的歷史房間id,這個貌似沒有很大壓力,但是考慮到極端情況下,如果直播出現(xiàn)卡頓,大量用戶同時刷新頁面,將對系統(tǒng)穩(wěn)定性帶來巨大的考驗。
最后,實時抽獎環(huán)節(jié)如何保障百萬級用戶在幾乎同一時間完成“點擊-開獎”的抽獎交互,同樣是一項不小的挑戰(zhàn)。
面對挑戰(zhàn),云開發(fā)如何破局?
那么應(yīng)對這聊天系統(tǒng)中的三大挑戰(zhàn),云開發(fā)如何一一攻克?
首先,應(yīng)對聊天室場景的數(shù)據(jù)壓力:一個字——「拆」!即將聊天信息的數(shù)據(jù)流,打散至50個環(huán)境中,并將系統(tǒng)分為主環(huán)境和聊天室環(huán)境,主環(huán)境用于承載房間匹配、用戶房間查詢、房間數(shù)據(jù)庫環(huán)境映射關(guān)系查詢等通用邏輯后臺;而聊天室環(huán)境則負責虛擬房間內(nèi)玩家的實時交互,包括文字消息、表情、動作等等。
聊天室數(shù)據(jù)拆分整體流程
解決完數(shù)據(jù)壓力問題,聊天邏輯的實現(xiàn)就比較清晰了:同一個房間的人,根據(jù) roomid 監(jiān)聽房間的聊天記錄,當有人發(fā)送消息、寫入聊天信息后,云開發(fā)的實時推送能力會自動推送消息給所有監(jiān)聽者,聊天室內(nèi)的玩家就能看到聊天消息了。而表情和動作交互,底層也是將其轉(zhuǎn)換成 json 對象來進行展現(xiàn)。
聊天記錄的數(shù)據(jù)結(jié)構(gòu)示例
接著,應(yīng)對大量用戶同時刷新頁面的高并發(fā)風險的方法:一個關(guān)鍵詞——「限頻」。具體來說,雖然云開發(fā)自帶的云函數(shù)有抗高并發(fā)的能力,但是因為查詢歷史房間 id 需要操作數(shù)據(jù)庫,為了保障數(shù)據(jù)庫層不被擊垮,采用云函數(shù)的限頻能力,就可以很好的解決這一問題。前端只要try catch一下,再通過優(yōu)化 UI 交互,就可以完美應(yīng)對極端情況的風險,還能很好的節(jié)約成本。
最后,針對百萬級用戶在同一時間開啟抽獎的實時性壓力:還是一個關(guān)鍵詞——「原生」。利用云開發(fā)原生提供的實時數(shù)據(jù)推送能力能夠完美支撐此場景,開發(fā)者只需寫一行代碼 watch 一下后端的數(shù)據(jù)變化即可,而無需進行其他操作(點擊詳細了解實時數(shù)據(jù)推送)。
總結(jié)
本次《英雄聯(lián)盟》9周年盛典活動,云開發(fā)利用實時數(shù)據(jù)推送、彈性擴縮容等能力打造了百萬在線級的實時聊天系統(tǒng),攻克了數(shù)據(jù)存儲壓力大、高并發(fā)風險和實時性要求高等三大挑戰(zhàn),抗住百萬流量洪峰,支持活動快速上線,縮減時間與人力成本。
除了本次涉及的直播彈幕和活動抽獎等場景,云開發(fā)已成功服務(wù)了微信讀書、騰訊游戲年度發(fā)布會、創(chuàng)造營2020、貓眼電影等眾多產(chǎn)品的多類營銷活動,以穩(wěn)定不宕機、靈活擴縮容、安全防刷等優(yōu)勢持續(xù)為客戶提供高質(zhì)量的服務(wù),歡迎更多開發(fā)者使用云開發(fā)打造穩(wěn)定、高質(zhì)的應(yīng)用與活動。
文章來源:站長之家用戶投稿
相關(guān)新聞
相關(guān)商品
【先咨詢,再下單】Google Play禮品卡¥1500日元充值卡_谷歌¥1500日本禮品卡_谷歌商店¥1500JPY兌換碼/點卡/Gift Card
¥130.00【先咨詢,再下單】Google Play禮品卡?5000韓元充值卡_谷歌?5000韓國禮品卡_谷歌商店?5000KRW兌換碼/點卡/Gift Card
¥35.00Google Play禮品卡$5 美元代充_谷歌$5美國代充_谷歌商店$5 USD兌換碼/點卡/Gift Card代充
¥38.00澳服瓦羅蘭特A$10澳元充值卡_澳服Valorant瓦羅蘭特/無畏契約A$10澳大利亞充值卡/兌換碼/點卡/Gift Card
¥55.33Google Play禮品卡€ 30歐元充值卡_谷歌€ 30歐盟禮品卡_谷歌商店€ 30EUR兌換碼/點卡/Gift Card
¥268.00【先咨詢,再下單】Google Play禮品卡HK$150港幣代充_谷歌HK$150香港游戲代充_谷歌商店HK$150HKD游戲代充/Gift Card
¥199.00