騰訊云:如何用云開(kāi)發(fā)打造“萬(wàn)人同屏”高并發(fā)實(shí)時(shí)互動(dòng)小程序

來(lái)源:騰訊云社區(qū)
作者:騰訊云開(kāi)發(fā)TCB
時(shí)間:2020-07-31
2889
剛剛過(guò)去的六月,國(guó)內(nèi)游戲迷們都剛剛體驗(yàn)過(guò)一場(chǎng)盛大的游戲發(fā)布會(huì)——2020騰訊游戲年度發(fā)布會(huì),由于疫情的原因,今年的發(fā)布會(huì)在線上舉行,不過(guò),得益于小程序的豐富體驗(yàn),本次發(fā)布會(huì)還是得到了游戲玩家們的認(rèn)可。

剛剛過(guò)去的六月,國(guó)內(nèi)游戲迷們都剛剛體驗(yàn)過(guò)一場(chǎng)盛大的游戲發(fā)布會(huì)——2020騰訊游戲年度發(fā)布會(huì),由于疫情的原因,今年的發(fā)布會(huì)在線上舉行,不過(guò),得益于小程序的豐富體驗(yàn),本次發(fā)布會(huì)還是得到了游戲玩家們的認(rèn)可。

0gn5al5szi.png

在發(fā)布會(huì)過(guò)程中,一個(gè)重要的環(huán)節(jié)就是跟隨著活動(dòng)的進(jìn)展,每個(gè)環(huán)節(jié)都會(huì)有自己的定制互動(dòng)。例如和平精英環(huán)節(jié),會(huì)有和平精英專(zhuān)場(chǎng)掉落抽獎(jiǎng)、和平精英閃現(xiàn)社區(qū)彈幕、議程也需要高亮和平精英模塊,如下圖:

r1dik46j1l.png

這就要求小程序能夠讓所有在觀看直播的游戲玩家同時(shí)看到抽獎(jiǎng)、寶盒等功能,實(shí)現(xiàn)實(shí)時(shí)交互。

此外,也會(huì)有一些場(chǎng)景需要做到議程高亮同一個(gè)模塊,抽獎(jiǎng)和閃現(xiàn)社區(qū)彈幕卻是不同游戲的。在對(duì)所有的功能點(diǎn)進(jìn)行分析后,我們發(fā)現(xiàn),最多需要90+開(kāi)關(guān)來(lái)完成實(shí)時(shí)控制,因此,這也要求我們可以實(shí)時(shí)的對(duì)這些功能的展示進(jìn)行控制。

從小程序->微信后臺(tái)->云開(kāi)發(fā)(云函數(shù))這一段公網(wǎng)鏈路是私有協(xié)議,不僅保障了安全性,而且提高了傳輸性能。

b3jwtuy8gg.png

在明確了訴求后,我們分析可能的實(shí)現(xiàn)方案:

1.接口輪詢(xún):接口輪詢(xún)是常規(guī)操作,但在后臺(tái)需要考慮好高并發(fā)的問(wèn)題的。特別是大型游戲發(fā)布會(huì),參與的游戲玩家人數(shù)會(huì)非常多,給后臺(tái)帶來(lái)的壓力是巨大的。

2.json文件輪詢(xún)——在發(fā)布系統(tǒng)更新發(fā)布包含當(dāng)前環(huán)節(jié)信息的json,小程序輪詢(xún)方式請(qǐng)求json文件。但這個(gè)方案頁(yè)面反應(yīng)不夠及時(shí),壓力也從后臺(tái)轉(zhuǎn)移到了當(dāng)天負(fù)責(zé)更新json文件的同學(xué)身上。

3.云開(kāi)發(fā)數(shù)據(jù)庫(kù)的實(shí)時(shí)數(shù)據(jù)推送——小程序原生能力,開(kāi)箱即用,無(wú)需管理長(zhǎng)連,無(wú)需編寫(xiě)服務(wù)端代碼,無(wú)需搭建和管理基礎(chǔ)設(shè)施,自動(dòng)收到更新推送。

綜合評(píng)估,認(rèn)為還是使用云開(kāi)發(fā)數(shù)據(jù)庫(kù)的實(shí)時(shí)數(shù)據(jù)推送更好,簡(jiǎn)單易上手,也是小程序的原生能力。調(diào)研發(fā)現(xiàn)云開(kāi)發(fā)的watch給到每個(gè)用戶(hù)的最大限制連接數(shù)是5萬(wàn),而我們預(yù)估活動(dòng)當(dāng)天的DAU超過(guò)限制,因此,聯(lián)系了云開(kāi)發(fā)的同事進(jìn)行擴(kuò)容,將限制提高,并進(jìn)行了壓測(cè),確保不出問(wèn)題。事實(shí)上在活動(dòng)整個(gè)過(guò)程,甚至是峰值都毫無(wú)壓力,輕松扛過(guò)用戶(hù)請(qǐng)求。

使用云開(kāi)發(fā)數(shù)據(jù)庫(kù)的實(shí)時(shí)數(shù)據(jù)推送讓整個(gè)開(kāi)發(fā)變得十分簡(jiǎn)單,只需要一個(gè)API——watch就足以完成所有的開(kāi)發(fā)。小程序可以通過(guò)watch實(shí)時(shí)監(jiān)聽(tīng)數(shù)據(jù)庫(kù)變更,在收到包含更新內(nèi)容的推送后,做出相應(yīng)的實(shí)時(shí)響應(yīng)。

1be53lyjag.png

在具體的實(shí)現(xiàn)方面,也十分簡(jiǎn)單,可以參考我們的代碼進(jìn)行操作。

我們將相關(guān)的監(jiān)聽(tīng)代碼進(jìn)行了封裝,方便在不同情況下調(diào)用。如果你有一些特定場(chǎng)景下才執(zhí)行操作的邏輯,可以直接在watch的onChange回調(diào)中調(diào)用進(jìn)行。

1596162728(1).png

并在合適的地方設(shè)置開(kāi)始監(jiān)聽(tīng),在頁(yè)面onshow的時(shí)候開(kāi)始監(jiān)聽(tīng),onhide的時(shí)候關(guān)閉監(jiān)聽(tīng),這樣既不浪費(fèi)監(jiān)聽(tīng)數(shù),也能盡量避免計(jì)劃外的操作導(dǎo)致watch斷連后無(wú)法重新連接。

1596162757(1).png

通過(guò)這樣的邏輯,我們實(shí)現(xiàn)了管理員在發(fā)布會(huì)環(huán)節(jié)開(kāi)始才放開(kāi)彈幕互動(dòng)入口:

5k098kgzi3 (1).gif

議程有抽獎(jiǎng),才會(huì)出現(xiàn)抽獎(jiǎng)入口,并且展示的是提供當(dāng)前抽獎(jiǎng)環(huán)節(jié)獎(jiǎng)品的產(chǎn)品logo:

drkldi4qzu.gif

主持人口播“查看Spark幸運(yùn)鵝中獎(jiǎng)結(jié)果吧!”的時(shí)候,會(huì)全屏彈窗展示中獎(jiǎng)名單,充滿儀式感!

i6949ikgqf.gif

發(fā)布會(huì)或者線下項(xiàng)目必須要考慮周全,都是一次性短時(shí)間高并發(fā)活動(dòng),沒(méi)有機(jī)會(huì)給你查漏補(bǔ)缺。所以我們還給watch想了個(gè)備案,監(jiān)聽(tīng)失?。╫nError)的時(shí)候就用上面提到的第2個(gè)方案開(kāi)始每秒輪詢(xún)同步更新的json文件,json里的數(shù)據(jù)和結(jié)構(gòu)跟watch的一樣,所以整體交互流程方面是不需要做額外修改的。結(jié)果也證明云開(kāi)發(fā)數(shù)據(jù)庫(kù)的watch是非??孔V的,輪詢(xún)都沒(méi)有用上。

071l5fr8mt.png

作為承載騰訊游戲年度發(fā)布會(huì)首次線上舉辦、首次TOC、首次進(jìn)行實(shí)時(shí)互動(dòng)的小程序,它也算是良好的完成了自己的任務(wù)。

特別要感謝騰訊云和小程序提供的好用、易用、靠譜的實(shí)時(shí)數(shù)據(jù)推送能力watch,讓我們的創(chuàng)意能更好的落地

原文鏈接:點(diǎn)擊前往 >
文章來(lái)源:騰訊云社區(qū)
版權(quán)說(shuō)明:本文內(nèi)容來(lái)自于騰訊云社區(qū),本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
相關(guān)文章
騰訊云數(shù)據(jù)庫(kù)PostgreSQL全面支持PG 17
騰訊云數(shù)據(jù)庫(kù)PostgreSQL全面支持PG 17
即日起,騰訊云PostgreSQL全面支持PostgreSQL 17.0。所有用戶(hù)可使用大版本升級(jí)能力升級(jí)至最新的PostgreSQL 17.0進(jìn)行體驗(yàn),也可以在產(chǎn)品購(gòu)買(mǎi)頁(yè)直接購(gòu)買(mǎi)。
騰訊云
云服務(wù)
2024-12-15
高可用這個(gè)問(wèn)題,加機(jī)器就能解決?
高可用這個(gè)問(wèn)題,加機(jī)器就能解決?
互聯(lián)網(wǎng)服務(wù)的可用性問(wèn)題是困擾企業(yè)IT人員的達(dá)摩克利斯之劍:防于未然,體現(xiàn)不出價(jià)值。已然發(fā)生,又面臨P0危機(jī)。就更別提穩(wěn)定性建設(shè)背后顯性的IT預(yù)算問(wèn)題與隱性的人員成本問(wèn)題。
騰訊云
云服務(wù)
2024-11-25
TDSQL TDStore引擎版替換HBase:在歷史庫(kù)場(chǎng)景中的成本與性能優(yōu)勢(shì)
TDSQL TDStore引擎版替換HBase:在歷史庫(kù)場(chǎng)景中的成本與性能優(yōu)勢(shì)
HBase憑借其高可用性、高擴(kuò)展性和強(qiáng)一致性,以及在廉價(jià)PC服務(wù)器上的低部署成本,廣泛應(yīng)用于大規(guī)模數(shù)據(jù)分析。
騰訊云
云服務(wù)
2024-11-04
復(fù)雜查詢(xún)性能弱,只讀分析引擎來(lái)幫忙
復(fù)雜查詢(xún)性能弱,只讀分析引擎來(lái)幫忙
隨著當(dāng)今業(yè)務(wù)的高速發(fā)展,復(fù)雜多表關(guān)聯(lián)的場(chǎng)景越來(lái)越普遍。但基于行式存儲(chǔ)的數(shù)據(jù)庫(kù)在進(jìn)行復(fù)雜查詢(xún)時(shí)性能相對(duì)較弱。
騰訊云
云服務(wù)
2024-11-02
優(yōu)質(zhì)服務(wù)商推薦
更多
個(gè)人VIP
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家