融云「聊天室屬性」: 語聊房、直播間有序運(yùn)行和絲滑體驗(yàn)的絕技

本文轉(zhuǎn)自【融云全球互聯(lián)網(wǎng)通信云】,移步免費(fèi)體驗(yàn)、了解更多。

信息技術(shù)的發(fā)展一日千里,但當(dāng)技術(shù)照進(jìn)現(xiàn)實(shí),轉(zhuǎn)變?yōu)樽寠蕵?、生活更豐富,讓工作更方便的實(shí)用能力,這個(gè)過程并非一日之功,也不是一成不變。

比如,IM 即時(shí)通訊中聊天室產(chǎn)品的聊天室屬性,表面“其貌不揚(yáng)”,內(nèi)里則在多番場景實(shí)踐下演變得“別有洞天”。

聊天室是直播、語聊房等社交泛娛樂產(chǎn)品必備的組件,它最顯著的形態(tài),就是我們常說的“公屏”——用戶關(guān)系臨時(shí)、消息內(nèi)容短小重復(fù)的公共聊天頻道。

殊不知,借助聊天室屬性,它的作用遠(yuǎn)不止于此。這個(gè)功能的優(yōu)劣,甚至直接影響語聊房和直播間的秩序和體驗(yàn)。

在指定聊天室中設(shè)置相關(guān)屬性,用戶進(jìn)入聊天室后可以同步獲取聊天室內(nèi)的屬性信息。

比如,語聊房中的主播麥位信息、角色管理等,狼人殺、劇本殺等游戲房場景中記錄用戶的角色和牌局狀態(tài)等。

這是融云首創(chuàng)的產(chǎn)品功能,源于一位語聊房開發(fā)者對(duì)“搶麥”功能的實(shí)現(xiàn)需求。經(jīng)過充分分析驗(yàn)證,這個(gè)需求在融云 IM 產(chǎn)品強(qiáng)大的外延能力下得以實(shí)現(xiàn),進(jìn)而沉淀為通用能力提供給更多開發(fā)者。

以此為界,聊天室產(chǎn)品的比拼有了新維度,在承接海量用戶的并發(fā)能力之外,有了更具生命力、更加鮮活的功能表現(xiàn),并逐漸構(gòu)建了自己的迭代循環(huán):功能領(lǐng)先→眾多開發(fā)者集成→新的場景需求→研發(fā)新功能→功能持續(xù)領(lǐng)先。

隨著人們的線上社交娛樂熱情被點(diǎn)燃,聊天室的應(yīng)用場景遍地開花,融云聊天室屬性功能也不斷在開發(fā)者的需求下豐富起來。

一、場景豐富:語聊房、直播中的聊天室屬性

1、語聊房

一個(gè)語聊房可能有海量用戶同時(shí)在線,任何一個(gè)人的麥位信息、角色身份等變化都需要在極短時(shí)間內(nèi)同步給房間內(nèi)所有人。

麥位管理:上麥即擁有了發(fā)言能力,下麥則從發(fā)言用戶變成普通用戶,鎖麥即可鎖定麥位拒絕用戶上麥,搶麥則為幾個(gè)用戶同時(shí)搶占一個(gè)麥位。同時(shí),還有禁言、發(fā)言等麥位狀態(tài)管理。

用戶管理:主播、麥上觀眾、房間觀眾等用戶角色設(shè)置;狼人殺、劇本殺等游戲房中警、匪、平民等角色設(shè)置。

房間管理:房間人數(shù)、麥位數(shù)量、房間公告等。

PK 狀態(tài):語聊房跨房間 PK 中的雙方支持人數(shù)戰(zhàn)績展示。

防炸麥:可通過聊天室屬性設(shè)置在用戶離線后及時(shí)清除連接狀態(tài),避免“幽靈麥”等情況的發(fā)生;通過聊天室屬性的房間狀態(tài)回調(diào)接口,開發(fā)者還可以實(shí)時(shí)感知用戶的上下麥狀態(tài),如出現(xiàn)非法用戶上麥的情況,可及時(shí)將其踢出房間,維護(hù)語聊房的正常秩序和良好體驗(yàn)。

2、直播

房間信息:房間人數(shù)、觀眾信息、房間公告。

角色管理:主播、管理員等角色信息和權(quán)限。

榜單信息:多維度觀眾榜單、最受歡迎禮物榜單等榜單信息。

PK 狀態(tài):連麥 PK 中的雙方支持人數(shù)戰(zhàn)績展示。

商品信息:電商直播場景中,主播當(dāng)前正在推廣的商品信息。

語聊房、直播都是近些年娛樂消費(fèi)側(cè)的明星品類,而在企業(yè)級(jí)的遠(yuǎn)程會(huì)議場景,聊天室屬性的使用也有一席之地——會(huì)議成員、人數(shù)等房間屬性和主持人、管理員、參與者等角色信息和相應(yīng)權(quán)限管理。

二、優(yōu)勢領(lǐng)先:穩(wěn)定可靠,實(shí)時(shí)同步,接口靈活

聊天室屬性首先有必達(dá)和實(shí)時(shí)的要求,比如麥位、角色等信息需要實(shí)時(shí)同步給聊天室的所有成員,且保持一定的秩序性,不會(huì)造成亂序等問題。

1、穩(wěn)定可靠的架構(gòu)設(shè)計(jì)

必達(dá)是對(duì)聊天室屬性性能的核心要求,也就是業(yè)務(wù)所設(shè)置的屬性能夠穩(wěn)定同步、不丟不亂,這其實(shí)考驗(yàn)的是整體的聊天室系統(tǒng)架構(gòu)。

融云聊天室的系統(tǒng)架構(gòu)如下圖示,通過連接層、業(yè)務(wù)層、存儲(chǔ)層的長連接、二級(jí)緩存、多活數(shù)據(jù)中心等方式保證響應(yīng)速度和分發(fā)速度。

融云聊天室的系統(tǒng)架構(gòu)

在海量用戶高并發(fā)場景下,消息分發(fā)能力將決定著系統(tǒng)的性能。以一個(gè)百萬級(jí)用戶量的聊天室為例,一條上行消息對(duì)應(yīng)百萬倍分發(fā)。這種情況下,海量消息的分發(fā),依靠單臺(tái)服務(wù)器是無法實(shí)現(xiàn)的。

融云將一個(gè)聊天室的人員分拆到不同的消息服務(wù)上,在聊天室服務(wù)收到消息后向消息服務(wù)擴(kuò)散,再由消息服務(wù)分發(fā)給用戶。

融云聊天室消息分發(fā)流程

2、分層存儲(chǔ)保障實(shí)時(shí)同步

聊天室屬性是以 Key 和 Value 的形式進(jìn)行傳遞和存儲(chǔ)的,屬性的操作行為主要有兩種:設(shè)置、刪除。服務(wù)器存儲(chǔ)屬性也分兩部分,分別是全量的屬性集合,以及屬性集合變更記錄。如下圖所示:

融云聊天室屬性存儲(chǔ)結(jié)構(gòu)

服務(wù)器存儲(chǔ)的兩份數(shù)據(jù),提供了兩種查詢聊天屬性的接口,分別是查詢?nèi)繑?shù)據(jù)和查詢?cè)隽繑?shù)據(jù)。這兩種接口的組合應(yīng)用極大地提升了聊天室屬性的查詢響應(yīng)能力。

對(duì)于剛進(jìn)入聊天室的成員,直接拉取全量聊天室屬性數(shù)據(jù)進(jìn)行展示。

對(duì)于已經(jīng)拉取過全量數(shù)據(jù)的成員,通過屬性變更記錄集合(Key 為變更時(shí)間戳,Value 里存著變更的類型以及屬性內(nèi)容),有序提供這段時(shí)間內(nèi)所有聊天室屬性的變更記錄,實(shí)現(xiàn)增量數(shù)據(jù)的快速同步,減輕客戶端的輪詢計(jì)算壓力。

3、靈活響應(yīng)業(yè)務(wù)需求

每個(gè)聊天室可設(shè)置 100 對(duì)屬性信息(KV),每秒鐘支持處理 100 次的屬性設(shè)置,可極大地滿足用戶場景需求。

同時(shí),融云聊天室屬性還具備以下特性以靈活支持各類實(shí)用業(yè)務(wù)需求。

支持強(qiáng)制設(shè)置單個(gè)屬性,滿足各種規(guī)則設(shè)置需求以維持房間秩序和業(yè)務(wù)的順利開展。單個(gè)屬性設(shè)置 Key 和 Value 一一對(duì)應(yīng),先到先得,可用于聊天室成員的搶麥、上麥等功能;而強(qiáng)制設(shè)置單個(gè)屬性,則可強(qiáng)制覆蓋 Key 上存儲(chǔ)的 Value 屬性,用于管理員對(duì)不發(fā)言或離線麥位成員的強(qiáng)制替換。

支持批量設(shè)置聊天室的屬性,比如業(yè)務(wù)中某個(gè)同類型、同權(quán)限的角色人物有多個(gè),則可以一次性統(tǒng)一設(shè)置多個(gè),且支持只占用一對(duì) KV。

屬性可隨用戶在線狀態(tài)自動(dòng)刪除或持續(xù)保留,當(dāng)用戶下線或退出聊天室,可以選擇設(shè)置其相關(guān)屬性隨其在線狀態(tài)消失或持續(xù)保留。

比如,麥上用戶離線,其相關(guān)屬性隨其下線自動(dòng)刪除,以保證用戶異常掉線時(shí)可釋放麥位;而若用戶身份為管理員,則其設(shè)置的房間公告等影響房間秩序的屬性可選擇持續(xù)保留。

屬性信息可實(shí)時(shí)同步客戶的應(yīng)用服務(wù)器,讓業(yè)務(wù)方實(shí)時(shí)掌握聊天室的變化狀態(tài),提升數(shù)據(jù)分析能力,更好地支持業(yè)務(wù)運(yùn)營。

支持房間信息預(yù)覽,當(dāng)用戶瀏覽 App 而未進(jìn)入房間時(shí),可以獲取聊天室屬性信息,為其選擇加入房間提供判斷依據(jù)和吸引力。

(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )