融云超級群,如何實現(xiàn)無限用戶順暢互動

融云超級群,打破了以往群組服務(wù)模式下群聊成員的數(shù)量上限魔咒,為行業(yè)提供了第一個真正支持無限用戶在線交流和獲取信息的社交產(chǎn)品大殺器。移步【融云全球互聯(lián)網(wǎng)通信云】免費體驗

融云超級群,如何實現(xiàn)無限用戶順暢互動

無限用戶分發(fā)因群成員數(shù)量多、業(yè)務(wù)需求量大面臨消息分發(fā)量激增、消息狀態(tài)多樣等多種挑戰(zhàn)。

為了保證超級群在超大規(guī)模用戶分發(fā)上的極致性能,融云超級群從設(shè)計階段便綜合考慮了服務(wù)部署模型、消息投遞方式以及資源隔離等核心難題的解決方案。

無限用戶分發(fā)面臨的技術(shù)挑戰(zhàn)

1.每個用戶上行發(fā)送的每條消息,都需要實時分發(fā)給所有用戶。即使目標(biāo)用戶不在線,也需要轉(zhuǎn)成推送,觸達(dá)這個用戶。

無限用戶可能過于抽象,我們以擁有1000萬用戶的一個群為例,一個用戶發(fā)送的每條消息都會變成1000萬的下行分發(fā)。在面對突發(fā)峰值,特別是群內(nèi)有爆點消息或大規(guī)模成員被帶起節(jié)奏的時候,數(shù)據(jù)的存儲和網(wǎng)絡(luò)的分發(fā)壓力會急劇上升。

2.超級群內(nèi)成員可能面對海量信息。無論是客戶端的性能或者用戶的心力,都是有瓶頸的。

成員量龐大的超級群會產(chǎn)生不同于普通聊天室的獨特需求:用戶希望既可以在有需要的時候不遺漏信息,又能在無關(guān)的時候不要被打擾。

所以,哪些消息、哪些場景需要推送,會話和消息以什么頻率和聚合的方式通知到客戶端,需要有一個巨大的可定制空間。

也就是說,作為一個通信平臺,在海量信息和實時聊天之間,需要把能力抽象,并賦予APP彈性調(diào)整的能力。

3.由于超級群中的信息量太大,需要支持將群分割為不同的頻道,類似傳統(tǒng)的topic或channel。即使相同的群和群成員,通過不同的頻道,仍然能將會話、消息、未讀數(shù)分門別類聚合。用戶可以更關(guān)注自己感興趣的部分,提升用戶粘性。

4.將信息和聊天結(jié)合的場景,一般都有多端的需求。不同的平臺,比如Android、iOS、Web等,在海量消息的網(wǎng)絡(luò)請求和存儲方面都有不同的技術(shù)特點,甚至同平臺不同廠商的推送通道特性也不同,這些都需要一一考慮。

當(dāng)然,無限用戶群,還需要為每個用戶提供全球的優(yōu)質(zhì)網(wǎng)絡(luò)接入,保證客戶端和服務(wù)器之間消息不重不丟不亂序。

在這方面,融云平臺每天承載億級用戶和千億的消息分發(fā),已經(jīng)提供了堅實的基礎(chǔ),無須特別考慮。移步【融云全球互聯(lián)網(wǎng)通信云】免費體驗

融云超級群的設(shè)計架構(gòu)和實施方案

服務(wù)分發(fā)分層架構(gòu)

融云超級群,如何實現(xiàn)無限用戶順暢互動

融云超級群從設(shè)計階段便綜合考慮了服務(wù)部署模型、消息投遞方式以及資源隔離等核心問題。移步【融云全球互聯(lián)網(wǎng)通信云】免費體驗

有限的擴(kuò)散模型:

主節(jié)點負(fù)責(zé)核心校驗,擴(kuò)散節(jié)點則負(fù)責(zé)數(shù)據(jù)讀寫,保證主節(jié)點高可用和擴(kuò)散節(jié)點分組內(nèi)高可用,確保強(qiáng)數(shù)據(jù)一致性

優(yōu)良的資源隔離:

支持公有云、專有云,分級的資源隔離,精準(zhǔn)的流控策略

動態(tài)的投遞模型:

根據(jù)群類型選擇消息投遞模型,多級消息緩存結(jié)構(gòu),在線狀態(tài)聯(lián)動,多種消息定向投遞策略

存儲和分發(fā)

對于底層存儲而言,群成員無上限和有上限區(qū)別很大,有上限我們可以根據(jù)上限進(jìn)行設(shè)計。

比如,普通群的消息,通??梢赃x擇寫擴(kuò)散,可以在實時投遞中獲得比較好的速度和并發(fā)性。結(jié)合半寫擴(kuò)散(引用分發(fā))的機(jī)制,可以在時間和空間上做一定的平衡。

但是超級群的場景,為了降低讀寫壓力,默認(rèn)采用讀擴(kuò)散的方式進(jìn)行優(yōu)化。原則上1寫N讀,通過上下行節(jié)點分離和一致性hash的特點,可以對讀和寫分別進(jìn)行特定優(yōu)化。針對熱點數(shù)據(jù)引入內(nèi)存級消息環(huán)和二級LRU緩存,保證讀寫性能。

分發(fā)模式

面對海量消息,用戶希望既可以在有需要的時候不遺漏信息,又能在無關(guān)的時候不要被打擾。

對這些業(yè)務(wù)形態(tài)進(jìn)行分析和實現(xiàn),落到分發(fā)模型上,可以分為兩大類。

一類是消息驅(qū)動型,比如Telegram,一個用戶實時接收所有會話的消息,會話狀態(tài)、未讀數(shù)、通知提醒其實都是由消息驅(qū)動的。

另一類是會話驅(qū)動,比如Discord,用戶有選擇性地接收某些會話的消息,關(guān)注度低的會話,僅需要接收會話狀態(tài)、未讀數(shù)、@信息等通知就可以。和第一類結(jié)合起來,還可以做到訂閱式的會話驅(qū)動。

分發(fā)機(jī)制決定了群的管理節(jié)點、會話節(jié)點、消息分發(fā)節(jié)點都必須是單獨的高可用邏輯單元。

消息投遞方式

用戶不在線的情況下,超級群仍然支持給用戶進(jìn)行推送。但是,考慮到用戶體驗,APP可以設(shè)置按時間聚合,或者僅推送@等關(guān)聯(lián)度較高的消息,也可以讓用戶自行選擇,設(shè)置全局、群組級別、頻道級別的免打擾,減少對用戶的打擾。

用戶在線的情況下,IM長連接一般有直接推送、通知拉取、聚合通知等方式。超級群的消息和會話,會動態(tài)地結(jié)合這幾種方式。協(xié)議層支持QoS并保證每條消息都有唯一值,客戶端可以通過增量時間戳的方式,進(jìn)行同步和補償。

用戶離線再上線的情況下,客戶端會首先增量同步超級群會話信息,并通過會話和消息的merge 和消息斷檔機(jī)制,同時保證消息的快速獲取和信息的完備性。

部分操作內(nèi)化

普通群場景下,大部分的狀態(tài)、未讀數(shù)、正在輸入等會話信息,默認(rèn)交給客戶端進(jìn)行處理,以保證靈活性。

但在超級群場景下,由于海量的歷史消息和多端的特點,這些信息的存儲和獲取,需要內(nèi)化在超級群的通信模型中。

針對消息的變更,融云超級群也提供了一系列擴(kuò)展和內(nèi)化的能力,比如消息發(fā)送時、發(fā)送后的擴(kuò)展信息,并支持消息的撤回、刪除、修改、引用修改等操作。

而針對APP 常用的通知或者控制信令的場景,融云也提供在線消息等方式,保證在線用戶的觸達(dá)并降低分發(fā)量。移步【融云全球互聯(lián)網(wǎng)通信云】免費體驗

流控和資源隔離

因為超級群的模型非常靈活且峰值很高,作為一個通信平臺,融云會在超級群的上行節(jié)點,提供APP、群組、信令級別的流控,保證平臺的穩(wěn)定性,且支持專有云的單獨調(diào)整。

通過以上方式,融云超級群得以在無限用戶場景中保證消息傳輸?shù)目煽啃裕粫霈F(xiàn)消息丟失、消息延遲、消息亂序等問題;消息高并發(fā)情況下,用戶不論是離線還是在線,都能有序接收推送或消息,不會出現(xiàn)卡頓,無法拉取等問題。同時,通過內(nèi)化部分操作的方式減輕了客戶端的性能壓力。

(免責(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)鏈接。 )