手機(jī)版 | 網(wǎng)站導(dǎo)航
觀察家網(wǎng) 財(cái)經(jīng) >

融云超級(jí)群,如何實(shí)現(xiàn)無(wú)限用戶順暢互動(dòng)

壹點(diǎn)網(wǎng) | 2022-01-20 17:53:06

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

有限的擴(kuò)散模型

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

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

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

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

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

存儲(chǔ)和分發(fā)

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

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

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

分發(fā)模式

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

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

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

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

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

消息投遞方式

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

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

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

部分操作內(nèi)化

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

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

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

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

流控和資源隔離

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

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

免責(zé)聲明:市場(chǎng)有風(fēng)險(xiǎn),選擇需謹(jǐn)慎!此文僅供參考,不作買(mǎi)賣(mài)依據(jù)。

標(biāo)簽:

  • 標(biāo)簽:中國(guó)觀察家網(wǎng) 中國(guó)綜合門(mén)戶網(wǎng),商業(yè)門(mén)戶網(wǎng)站,新媒體,網(wǎng)絡(luò)媒體,新聞,財(cái)經(jīng),體育,娛樂(lè),時(shí)尚,汽車(chē),房產(chǎn),科技,圖片,論壇,微博,博客,視頻,電影,電視劇

相關(guān)推薦