如何解決在線觀眾參與的實(shí)時(shí)挑戰(zhàn)?
譯文譯者 | 李睿
審校 | 梁策 孫淑娟
什么是觀眾參與?
在線觀眾參與的一個(gè)簡(jiǎn)單示例是:帶有主持人的直播和供觀眾成員實(shí)時(shí)互動(dòng)的聊天系統(tǒng)。其他觀眾參與解決方案包括觀影派對(duì)、投票、測(cè)驗(yàn)和排行榜等活動(dòng),涵蓋在線聊天或提問回答等功能,供參與者在分享體驗(yàn)的同時(shí)進(jìn)行交流。
1.設(shè)備和用戶在場(chǎng)
了解觀眾參與的一個(gè)方面是能夠知道誰在參與虛擬活動(dòng)或用戶的“在場(chǎng)”。與在場(chǎng)情況密切相關(guān)的是用戶的狀態(tài),這有關(guān)基本功能的實(shí)現(xiàn),例如當(dāng)有人在聊天窗口中鍵入消息時(shí)的指示,或設(shè)備的實(shí)時(shí)位置。
2.聊天
發(fā)送聊天消息是觀眾互動(dòng)并向在線活動(dòng)(例如直播)的主持人發(fā)送即時(shí)反饋的一種常用方式。Twitch就是一個(gè)早期例子,它很受游戲玩家的歡迎,讓玩家通過流媒體玩游戲,或通過網(wǎng)絡(luò)攝像頭實(shí)時(shí)觀看和評(píng)論游戲。
3.調(diào)查投票和提問回答
民意調(diào)查和提問回答是觀眾參與的額外環(huán)節(jié)。例如,主持人可能會(huì)問直播觀眾,“你最喜歡什么口味的冰淇淋?”并為參與者提供一個(gè)網(wǎng)頁,讓他們可以從一系列口味選項(xiàng)中進(jìn)行在線投票,觀眾的答案可被實(shí)時(shí)可視化,以為條形圖、餅圖、甚至是文字云形式顯示在直播中,從而吸引觀眾參與。當(dāng)參與者提交投票時(shí),這類調(diào)查可能會(huì)讓響應(yīng)激增。
提問回答的方式則與之相反。在線活動(dòng)的主持人將共享一個(gè)鏈接,參與者可以跟蹤該鏈接并輸入問題和評(píng)論,以了解更多信息或?qū)崟r(shí)給出反饋。
4.測(cè)驗(yàn)功能和游戲化
另一種吸引觀眾的方式是多人知識(shí)競(jìng)賽,參與者參加現(xiàn)場(chǎng)提問,回答問題,并在排行榜上查看他們的分?jǐn)?shù)。競(jìng)賽可以在獨(dú)立平臺(tái)上或集成到直播中,這在教育領(lǐng)域尤其流行。Mentimeter、Wooclap、Kahoot、Slido和HQTrivia等都是受歡迎的產(chǎn)品。
參與者使用邀請(qǐng)鏈接登錄特定的競(jìng)賽,當(dāng)問題實(shí)時(shí)出現(xiàn)時(shí),他們會(huì)在自己的設(shè)備上回答問題,然后其分?jǐn)?shù)會(huì)顯示在排行榜上,以添加游戲化元素。為公平起見,參與者有作答時(shí)限。需要同時(shí)向所有玩家發(fā)送問題(扇出),且隨著他們?cè)诘褂?jì)時(shí)前完成挑戰(zhàn),也會(huì)有相應(yīng)地響應(yīng)激增(扇入)。
實(shí)時(shí)更新鞏固了觀眾參與度
為了使上面列出的功能具有吸引力,它們需要以“實(shí)時(shí)”或接近實(shí)時(shí)的方式呈現(xiàn),也就是低于人類感知的100毫秒閾值。建立在實(shí)時(shí)系統(tǒng)上的技術(shù)使用一系列事件(例如異步對(duì)話),而不是典型同步通信的請(qǐng)求和響應(yīng)范例。
事件驅(qū)動(dòng)架構(gòu)服務(wù)的用例需要立即處理數(shù)據(jù),以提供令人滿意的用戶體驗(yàn)。它消除了阻塞或持續(xù)輪詢的需要,并在感興趣的事件發(fā)生時(shí)通知應(yīng)用程序代碼。
發(fā)布和訂閱(pub/sub)模式是事件驅(qū)動(dòng)系統(tǒng)中的典型。當(dāng)狀態(tài)發(fā)生變化時(shí),事件生產(chǎn)者(發(fā)布者)發(fā)送事件消息,然后事件訂閱者使用它們。通常情況下,發(fā)布者和訂閱者之間會(huì)有一個(gè)專門的代理,使事件制作者能夠?qū)⒇?zé)任轉(zhuǎn)移給代理,代理將大量通知發(fā)送給不同設(shè)備和平臺(tái)的消費(fèi)者。
代理還將從生產(chǎn)者接收到的事件記錄為消息。事件歷史記錄會(huì)保留一定時(shí)間,以便訂閱者可以從任何特定點(diǎn)讀取事件歷史記錄。
構(gòu)建實(shí)時(shí)架構(gòu)的技術(shù)挑戰(zhàn)
實(shí)時(shí)的、事件驅(qū)動(dòng)的架構(gòu)是一個(gè)分布式系統(tǒng),具有相關(guān)的可靠性、延遲和帶寬問題,網(wǎng)絡(luò)的不可預(yù)測(cè)性是一個(gè)重大挑戰(zhàn)。
1.消息完整性
在事件驅(qū)動(dòng)的系統(tǒng)中,丟失、重復(fù)或無序的消息可能會(huì)產(chǎn)生重大后果。例如,聊天消息,它就依賴于明確定義的消息序列。如果它們無序到達(dá)或丟失,會(huì)給用戶體驗(yàn)帶來缺陷。
- 丟失的消息
用戶的連接可以斷開并重新連接:例如他們出現(xiàn)電源故障或網(wǎng)絡(luò)上出現(xiàn)系統(tǒng)問題,他們正在移動(dòng),或者關(guān)閉聊天應(yīng)用程序并稍后重新啟動(dòng)。
從用戶的角度來看,由于連接不穩(wěn)定而丟失消息是不可接受的。因此,當(dāng)用戶重新連接時(shí),應(yīng)用程序需要以最小損害程度從用戶斷開連接之前的那一點(diǎn)重新開始。任何錯(cuò)過的消息都需要在不復(fù)制已處理的消息的情況下傳遞,整個(gè)體驗(yàn)需要完全無縫。
大多數(shù)事件驅(qū)動(dòng)系統(tǒng)使用至少一次交付。當(dāng)代理向事件消費(fèi)者發(fā)送消息時(shí),它需要確認(rèn)已收到消息。如果代理沒有收到確認(rèn),它會(huì)再次發(fā)送消息,以確保它在第一次發(fā)送時(shí)沒有丟失(并將繼續(xù)發(fā)送消息直到收到確認(rèn)為止)。但是,如果收到消息并且確認(rèn)丟失了怎么辦?任何最近的消息現(xiàn)在都是原始消息的副本。
- 消息復(fù)制和排序
如果事件驅(qū)動(dòng)系統(tǒng)使用冪等消息,則消息重復(fù)是可以接受的,冪等消息可以被多次處理,但在第一次之后不會(huì)更改系統(tǒng)。例如,對(duì)加熱恒溫器進(jìn)行編程。如果在回家前輸入房間需要達(dá)到的準(zhǔn)確溫度,那么指令是否發(fā)送多次并不重要。
恒溫器將設(shè)置為所需的溫度,可能會(huì)重復(fù)設(shè)置,但仍將是想要的溫度。但是,如果要求把空調(diào)的溫度調(diào)高,并且被多次發(fā)送的話,那么其高溫可能讓人難以忍受。
聊天應(yīng)用程序中的消息重復(fù)對(duì)用戶來說與丟失消息或亂序消息一樣令人厭煩。一種常見的方法是,如果消息無法以任何順序成功處理,則使用唯一ID對(duì)消息進(jìn)行排序。
除了冪等消息類型之外,許多事件驅(qū)動(dòng)系統(tǒng)使用一次性處理保證來協(xié)調(diào)與重復(fù)消息相關(guān)的問題。應(yīng)用重復(fù)數(shù)據(jù)消除過程,以便檢測(cè)并丟棄先前處理的消息。
2.性能
網(wǎng)絡(luò)延遲是數(shù)據(jù)到達(dá)目的地所需的時(shí)間,是成功吸引受眾的關(guān)鍵因素。在大規(guī)模分布式系統(tǒng)中,延遲在節(jié)點(diǎn)之間傳播得越遠(yuǎn),其性能就越差。
高延遲會(huì)完全破壞實(shí)時(shí)音頻通信和視頻質(zhì)量,性能考慮全球受眾,或在互聯(lián)網(wǎng)基礎(chǔ)設(shè)施較差的地區(qū)托管用戶變得越來越重要。
低網(wǎng)絡(luò)延遲是由于自地理位置接近。數(shù)據(jù)應(yīng)通過托管數(shù)據(jù)中心和邊緣加速點(diǎn)盡可能靠近用戶。然而,將延遲最小化是不夠的。用戶體驗(yàn)需要將延遲差異降至最低,以確保可預(yù)測(cè)性。
服務(wù)器性能(處理速度、使用的硬件、可用內(nèi)存)和延遲之間也存在很強(qiáng)的相關(guān)性。為了防止網(wǎng)絡(luò)擁塞和服務(wù)器超載,必須能夠動(dòng)態(tài)增加服務(wù)器層的容量并重新分配負(fù)載。
3.可用性
觀眾參與度的一個(gè)特殊方面是無法預(yù)測(cè)會(huì)有多少參與者。對(duì)于許多活動(dòng)來說,直到活動(dòng)開始前幾小時(shí)或幾分鐘才能知道觀眾人數(shù)。這帶來的技術(shù)挑戰(zhàn)是,在任何支持該事件的系統(tǒng)中,都很難規(guī)劃和提供足夠的容量。
在處理大量負(fù)載的情況下,實(shí)現(xiàn)可用性和彈性,以滿足嚴(yán)格的正常運(yùn)行時(shí)間要求不僅僅是故障切換這樣的傳統(tǒng)機(jī)制,而是關(guān)于管理容量的。面臨的挑戰(zhàn)是橫向擴(kuò)展并迅速吸收數(shù)百萬個(gè)連接,而無需預(yù)先調(diào)配。
為確保網(wǎng)絡(luò)能夠適應(yīng)此類情況,需要監(jiān)控以下指標(biāo):
- 工作負(fù)載的百分比
- 負(fù)載的彈性和分布
- 最大連接數(shù)和吞吐量
當(dāng)超過某些閾值時(shí),采用一些辦法自動(dòng)、動(dòng)態(tài)地提供額外的容量,這對(duì)于確保超高的正常運(yùn)行時(shí)間至關(guān)重要。
優(yōu)化應(yīng)包括最小化傳輸?shù)臄?shù)據(jù)量,例如,減少消息大小,僅發(fā)送對(duì)數(shù)據(jù)的更改(增量)而不是整個(gè)有效負(fù)載。
4.可靠性
可靠性至關(guān)重要,因?yàn)槿绻顒?dòng)因故障而無法運(yùn)行或中斷,會(huì)給主持人造成尷尬。觀眾參與的實(shí)時(shí)平臺(tái)需要具有容錯(cuò)性,以便即使組件發(fā)生故障也可以繼續(xù)運(yùn)行。
為了實(shí)現(xiàn)容錯(cuò),需要有多個(gè)組件能夠在某些組件丟失時(shí)維護(hù)系統(tǒng)。即使在多個(gè)基礎(chǔ)設(shè)施出現(xiàn)故障的情況下,區(qū)域和全球?qū)用娴娜哂嘁材艽_保服務(wù)的連續(xù)性。不應(yīng)該有單點(diǎn)擁塞和單點(diǎn)故障。
當(dāng)一個(gè)或多個(gè)組件發(fā)生故障時(shí),其余組件需要自行支持服務(wù)。了解可以容忍多少區(qū)域故障(例如,每秒實(shí)例故障的數(shù)量)至關(guān)重要。如果一個(gè)區(qū)域因故障轉(zhuǎn)移到另一個(gè)區(qū)域而脫機(jī),則需要有足夠的容量來吸收額外的流量,即使在峰值負(fù)載下也是如此。
可靠性四大支柱
要構(gòu)建一個(gè)為實(shí)時(shí)觀眾參與提供基礎(chǔ)的系統(tǒng),需要具有低延遲、可擴(kuò)展性和彈性的容錯(cuò)基礎(chǔ)架構(gòu),以及確保消息傳遞完整性的架構(gòu)。
企業(yè)如果為滿足業(yè)務(wù)具體要求構(gòu)建自定義解決方案,可能終會(huì)背負(fù)基礎(chǔ)設(shè)施所有權(quán)、技術(shù)債務(wù)以及對(duì)工程持續(xù)投資帶來的高昂成本。
對(duì)于許多企業(yè)來說,將規(guī)模、延遲、數(shù)據(jù)完整性和可靠性的責(zé)任轉(zhuǎn)移到Ably這樣的第三方供應(yīng)商更經(jīng)濟(jì),這些第三方供應(yīng)商應(yīng)具有性能、完整性、可靠性和可用性的四大可靠性支柱。
在構(gòu)建實(shí)時(shí)解決方案以支持大規(guī)模受眾方面,這些平臺(tái)可以讓擔(dān)憂不復(fù)存在。因此企業(yè)可以專注于其核心產(chǎn)品,優(yōu)先考慮受眾參與規(guī)劃,進(jìn)而開發(fā)更多功能以保持競(jìng)爭(zhēng)力。
原文標(biāo)題:Realtime Challenges for Audience Engagement,作者:Jo Stichbury