本文轉(zhuǎn)自【融云全球互聯(lián)網(wǎng)通信云】,移步免費體驗、了解更多。
信息技術(shù)的發(fā)展一日千里,但當(dāng)技術(shù)照進(jìn)現(xiàn)實,轉(zhuǎn)變?yōu)樽寠蕵贰⑸罡S富,讓工作更方便的實用能力,這個過程并非一日之功,也不是一成不變。
比如,IM 即時通訊中聊天室產(chǎn)品的聊天室屬性,表面“其貌不揚”,內(nèi)里則在多番場景實踐下演變得“別有洞天”。
聊天室是直播、語聊房等社交泛娛樂產(chǎn)品必備的組件,它最顯著的形態(tài),就是我們常說的“公屏”——用戶關(guān)系臨時、消息內(nèi)容短小重復(fù)的公共聊天頻道。
殊不知,借助聊天室屬性,它的作用遠(yuǎn)不止于此。這個功能的優(yōu)劣,甚至直接影響語聊房和直播間的秩序和體驗。
在指定聊天室中設(shè)置相關(guān)屬性,用戶進(jìn)入聊天室后可以同步獲取聊天室內(nèi)的屬性信息。
比如,語聊房中的主播麥位信息、角色管理等,狼人殺、劇本殺等游戲房場景中記錄用戶的角色和牌局狀態(tài)等。
這是融云首創(chuàng)的產(chǎn)品功能,源于一位語聊房開發(fā)者對“搶麥”功能的實現(xiàn)需求。經(jīng)過充分分析驗證,這個需求在融云 IM 產(chǎn)品強大的外延能力下得以實現(xiàn),進(jìn)而沉淀為通用能力提供給更多開發(fā)者。
以此為界,聊天室產(chǎn)品的比拼有了新維度,在承接海量用戶的并發(fā)能力之外,有了更具生命力、更加鮮活的功能表現(xiàn),并逐漸構(gòu)建了自己的迭代循環(huán):功能領(lǐng)先→眾多開發(fā)者集成→新的場景需求→研發(fā)新功能→功能持續(xù)領(lǐng)先。
隨著人們的線上社交娛樂熱情被點燃,聊天室的應(yīng)用場景遍地開花,融云聊天室屬性功能也不斷在開發(fā)者的需求下豐富起來。
一、場景豐富:語聊房、直播中的聊天室屬性
1、語聊房
一個語聊房可能有海量用戶同時在線,任何一個人的麥位信息、角色身份等變化都需要在極短時間內(nèi)同步給房間內(nèi)所有人。
麥位管理:上麥即擁有了發(fā)言能力,下麥則從發(fā)言用戶變成普通用戶,鎖麥即可鎖定麥位拒絕用戶上麥,搶麥則為幾個用戶同時搶占一個麥位。同時,還有禁言、發(fā)言等麥位狀態(tài)管理。
用戶管理:主播、麥上觀眾、房間觀眾等用戶角色設(shè)置;狼人殺、劇本殺等游戲房中警、匪、平民等角色設(shè)置。
房間管理:房間人數(shù)、麥位數(shù)量、房間公告等。
PK 狀態(tài):語聊房跨房間 PK 中的雙方支持人數(shù)戰(zhàn)績展示。
防炸麥:可通過聊天室屬性設(shè)置在用戶離線后及時清除連接狀態(tài),避免“幽靈麥”等情況的發(fā)生;通過聊天室屬性的房間狀態(tài)回調(diào)接口,開發(fā)者還可以實時感知用戶的上下麥狀態(tài),如出現(xiàn)非法用戶上麥的情況,可及時將其踢出房間,維護(hù)語聊房的正常秩序和良好體驗。
2、直播
房間信息:房間人數(shù)、觀眾信息、房間公告。
角色管理:主播、管理員等角色信息和權(quán)限。
榜單信息:多維度觀眾榜單、最受歡迎禮物榜單等榜單信息。
PK 狀態(tài):連麥 PK 中的雙方支持人數(shù)戰(zhàn)績展示。
商品信息:電商直播場景中,主播當(dāng)前正在推廣的商品信息。
語聊房、直播都是近些年娛樂消費側(cè)的明星品類,而在企業(yè)級的遠(yuǎn)程會議場景,聊天室屬性的使用也有一席之地——會議成員、人數(shù)等房間屬性和主持人、管理員、參與者等角色信息和相應(yīng)權(quán)限管理。
二、優(yōu)勢領(lǐng)先:穩(wěn)定可靠,實時同步,接口靈活
聊天室屬性首先有必達(dá)和實時的要求,比如麥位、角色等信息需要實時同步給聊天室的所有成員,且保持一定的秩序性,不會造成亂序等問題。
1、穩(wěn)定可靠的架構(gòu)設(shè)計
必達(dá)是對聊天室屬性性能的核心要求,也就是業(yè)務(wù)所設(shè)置的屬性能夠穩(wěn)定同步、不丟不亂,這其實考驗的是整體的聊天室系統(tǒng)架構(gòu)。
融云聊天室的系統(tǒng)架構(gòu)如下圖示,通過連接層、業(yè)務(wù)層、存儲層的長連接、二級緩存、多活數(shù)據(jù)中心等方式保證響應(yīng)速度和分發(fā)速度。
融云聊天室的系統(tǒng)架構(gòu)
在海量用戶高并發(fā)場景下,消息分發(fā)能力將決定著系統(tǒng)的性能。以一個百萬級用戶量的聊天室為例,一條上行消息對應(yīng)百萬倍分發(fā)。這種情況下,海量消息的分發(fā),依靠單臺服務(wù)器是無法實現(xiàn)的。
融云將一個聊天室的人員分拆到不同的消息服務(wù)上,在聊天室服務(wù)收到消息后向消息服務(wù)擴散,再由消息服務(wù)分發(fā)給用戶。
融云聊天室消息分發(fā)流程
2、分層存儲保障實時同步
聊天室屬性是以 Key 和 Value 的形式進(jìn)行傳遞和存儲的,屬性的操作行為主要有兩種:設(shè)置、刪除。服務(wù)器存儲屬性也分兩部分,分別是全量的屬性集合,以及屬性集合變更記錄。如下圖所示:
融云聊天室屬性存儲結(jié)構(gòu)
服務(wù)器存儲的兩份數(shù)據(jù),提供了兩種查詢聊天屬性的接口,分別是查詢?nèi)繑?shù)據(jù)和查詢增量數(shù)據(jù)。這兩種接口的組合應(yīng)用極大地提升了聊天室屬性的查詢響應(yīng)能力。
對于剛進(jìn)入聊天室的成員,直接拉取全量聊天室屬性數(shù)據(jù)進(jìn)行展示。
對于已經(jīng)拉取過全量數(shù)據(jù)的成員,通過屬性變更記錄集合(Key 為變更時間戳,Value 里存著變更的類型以及屬性內(nèi)容),有序提供這段時間內(nèi)所有聊天室屬性的變更記錄,實現(xiàn)增量數(shù)據(jù)的快速同步,減輕客戶端的輪詢計算壓力。
3、靈活響應(yīng)業(yè)務(wù)需求
每個聊天室可設(shè)置 100 對屬性信息(KV),每秒鐘支持處理 100 次的屬性設(shè)置,可極大地滿足用戶場景需求。
同時,融云聊天室屬性還具備以下特性以靈活支持各類實用業(yè)務(wù)需求。
支持強制設(shè)置單個屬性,滿足各種規(guī)則設(shè)置需求以維持房間秩序和業(yè)務(wù)的順利開展。單個屬性設(shè)置 Key 和 Value 一一對應(yīng),先到先得,可用于聊天室成員的搶麥、上麥等功能;而強制設(shè)置單個屬性,則可強制覆蓋 Key 上存儲的 Value 屬性,用于管理員對不發(fā)言或離線麥位成員的強制替換。
支持批量設(shè)置聊天室的屬性,比如業(yè)務(wù)中某個同類型、同權(quán)限的角色人物有多個,則可以一次性統(tǒng)一設(shè)置多個,且支持只占用一對 KV。
屬性可隨用戶在線狀態(tài)自動刪除或持續(xù)保留,當(dāng)用戶下線或退出聊天室,可以選擇設(shè)置其相關(guān)屬性隨其在線狀態(tài)消失或持續(xù)保留。
比如,麥上用戶離線,其相關(guān)屬性隨其下線自動刪除,以保證用戶異常掉線時可釋放麥位;而若用戶身份為管理員,則其設(shè)置的房間公告等影響房間秩序的屬性可選擇持續(xù)保留。
屬性信息可實時同步客戶的應(yīng)用服務(wù)器,讓業(yè)務(wù)方實時掌握聊天室的變化狀態(tài),提升數(shù)據(jù)分析能力,更好地支持業(yè)務(wù)運營。
支持房間信息預(yù)覽,當(dāng)用戶瀏覽 App 而未進(jìn)入房間時,可以獲取聊天室屬性信息,為其選擇加入房間提供判斷依據(jù)和吸引力。
(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進(jìn)一步核實,并對任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實,溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )