融云超級(jí)群,讓微博、貼吧聊天“實(shí)時(shí)”起來

刷微博是許多人每天的“例行指部鍛煉”,一掃一劃,就能評(píng)論熱點(diǎn)話題,訂閱熱門動(dòng)態(tài)。當(dāng)然,也有不少人對(duì)明星不感興趣,轉(zhuǎn)而去刷Reddit、貼吧、虎撲、知識(shí)星球或是其他BBS社區(qū)。對(duì)于90、80后來說,這個(gè)被“刷”的對(duì)象可能是曾經(jīng)的即刻、糗百,天涯、貓撲。

可以說,“聚眾看熱鬧”是人類永恒不變的愛好,但我們看熱鬧的方式卻并不豐富:要么刷BBS社區(qū),要么扎進(jìn)社交軟件的群聊。

不知你有沒有想過,如果將二者合二為一,讓微博、貼吧這樣的社區(qū),全部變成即時(shí)聊天,各個(gè)博主、吧友的動(dòng)態(tài),全部以群聊消息的形式推送給你,你又可以即時(shí)地回復(fù)、互動(dòng),甚至和這些博主、吧友連麥視頻,情況會(huì)是怎樣的?

這將是一個(gè)超級(jí)社區(qū),或者更準(zhǔn)確地說,這將是一個(gè)無人數(shù)上限的“超級(jí)群”。移步【融云全球互聯(lián)網(wǎng)通信云】免費(fèi)體驗(yàn)【融云超級(jí)群】

可這個(gè)“超級(jí)群”,實(shí)現(xiàn)起來將非常困難。在程序員看到產(chǎn)品設(shè)計(jì)的那一刻,就有精神崩潰的風(fēng)險(xiǎn)。

01真正的服務(wù)器壓力

“崩潰”主要源自技術(shù)挑戰(zhàn),更確切地說,是服務(wù)器面臨的巨大的讀寫壓力和存儲(chǔ)壓力。

微博曾出現(xiàn)過幾次著名的故障:趙麗穎領(lǐng)證、關(guān)曉彤官宣、王寶強(qiáng)離婚。在調(diào)侃微博崩潰的各種網(wǎng)絡(luò)段子背后,我們能看到的是,一個(gè)架構(gòu)師面對(duì)一條微博下幾秒新增數(shù)萬條評(píng)論,服務(wù)器壓力瞬間暴漲幾十倍的無奈身影。

與此類似的是直播彈幕的分發(fā)場(chǎng)景。無論是近期的視頻號(hào)五月天跨年演唱會(huì),還是B站春晚,彈幕過百萬輕而易舉(“二零一九最美的夜”bilibili晚會(huì)彈幕超過170萬條)。

理論上講,每一條彈幕都要向直播間內(nèi)觀眾做全量分發(fā)。以五月天跨年演唱會(huì)為例,當(dāng)晚有1,680萬人在線上觀看,如果保守假設(shè)當(dāng)晚共發(fā)送100萬條彈幕,那么單是彈幕的寫操作,就至少要執(zhí)行16,800,000 x 1,000,000次。

因?yàn)閷?shí)際支撐有困難,又要顧及用戶的屏幕根本無法同屏顯示上萬條評(píng)論,所以彈幕的轉(zhuǎn)發(fā)一般都是降級(jí)處理——分發(fā)一小部分給你看,其他略過。

而如果將微博評(píng)論、直播彈幕,全部“群聊化”,問題會(huì)更加恐怖?!叭毫幕焙?,產(chǎn)品形態(tài)成為“超級(jí)群”,問題進(jìn)入IM場(chǎng)景,可以做相應(yīng)的流控,但不能丟棄信息。且無論是微博評(píng)論還是直播彈幕,對(duì)信息上下文的關(guān)注度都不高,但這恰恰是IM關(guān)注的重點(diǎn)。

可以說,至少在3年以前,能夠系統(tǒng)解決這些問題并將其打磨為一個(gè)成熟產(chǎn)品的人不多。直到2018年,國(guó)外出現(xiàn)了一個(gè)名叫Discord的軟件,網(wǎng)友才體驗(yàn)到了這種全新的社區(qū)形式。興趣社區(qū)、粉絲運(yùn)營(yíng),你離Discord 只差一個(gè)「融云超級(jí)群」,移步【融云全球互聯(lián)網(wǎng)通信云】免費(fèi)體驗(yàn)。

Discord最初只服務(wù)于游戲語音連麥,但很快演化為一個(gè)超級(jí)社區(qū)。2021年,據(jù)CNN報(bào)道,Discord已有超過1.4億名注冊(cè)用戶,微軟正在談判以100億美元收購它。

而在npr的采訪中,美國(guó)芝加哥地區(qū)的一名18歲少年表示,他2020年的大部分時(shí)間都在Discord上閑逛,并將其形容為“Reddit和群聊的混合體”。

元宇宙的支持者們也驚奇地發(fā)現(xiàn),所謂的“Discord模式”,不就是未來元宇宙虛擬社區(qū)的基礎(chǔ)模式么?在元宇宙里,總不能先加個(gè)500人的群再開始聊天吧。

拋開模式創(chuàng)新不談,如果要深究Discord的技術(shù)核心,恰恰就是我們前面所描述的“超級(jí)群”。而在2022年1月11日,融云也發(fā)布了一款名為“超級(jí)群”的PaaS產(chǎn)品,以此為例,我們或許能搞清楚,這種帶了點(diǎn)科幻色彩的未來社區(qū),究竟是如何實(shí)現(xiàn)的。興趣社區(qū)、粉絲運(yùn)營(yíng),你離Discord 只差一個(gè)「融云超級(jí)群」,移步【融云全球互聯(lián)網(wǎng)通信云】免費(fèi)體驗(yàn)。

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

超級(jí)群的底層技術(shù)支撐能力,可以簡(jiǎn)單分為兩部分來談,分別是超級(jí)群業(yè)務(wù)能力、IM底層技術(shù)能力。

融云超級(jí)群,讓微博、貼吧聊天”實(shí)時(shí)“起來

超級(jí)群的業(yè)務(wù)能力,在架構(gòu)設(shè)計(jì)層面共分為四層,分別是加速網(wǎng)絡(luò)、接入層、核心服務(wù)層以及底層存儲(chǔ)。之所以要做這樣的劃分,是為了充分利用融云自身的統(tǒng)一加速網(wǎng)絡(luò)機(jī)制,保障網(wǎng)絡(luò)連通性以及連接質(zhì)量,讓超級(jí)群可以根據(jù)自身業(yè)務(wù)需求,在連接通道的基礎(chǔ)上,專心實(shí)現(xiàn)更高效的業(yè)務(wù)交互。

在融云,傳統(tǒng)的群消息建立在收發(fā)模型(收件箱、發(fā)件箱)的基礎(chǔ)上,獨(dú)立維護(hù)會(huì)話列表和歷史消息存儲(chǔ)。從用戶發(fā)送群消息,到群內(nèi)(成員數(shù)量為N )接收群消息。整個(gè)過程將產(chǎn)生四類消息:

1.一條發(fā)送方發(fā)件箱記錄;

2.N-1條接收方的收件箱記錄;

3.1條群歷史消息記錄;

4.N條會(huì)話列表記錄。

消息存儲(chǔ)投遞流程為:

終端A ->發(fā)送消息->接入服務(wù)->群管理(群消息上行) ->分發(fā)->群聊消息分發(fā)節(jié)點(diǎn)->消息節(jié)點(diǎn)->通知拉取(直接發(fā)送) ->終端B/C/D

在這樣的流程下,消息分發(fā)節(jié)點(diǎn)與消息節(jié)點(diǎn)交互密切,通常合并部署。同時(shí),消息節(jié)點(diǎn)也會(huì)直接觸發(fā)收件箱、發(fā)件箱的消息存儲(chǔ)。

但在超級(jí)群的場(chǎng)景下,群成員數(shù)量理論上無上限,無論是消息的上行、下行,還是消息在存儲(chǔ)層的寫入和查詢,都將導(dǎo)致空前的服務(wù)承載壓力,以上方案因此不再適用。于是,融云在現(xiàn)有連接機(jī)制之上,針對(duì)超級(jí)群做了交互設(shè)計(jì)優(yōu)化,設(shè)計(jì)了兩種分發(fā)模型:分別叫做消息驅(qū)動(dòng)模型和會(huì)話驅(qū)動(dòng)模型。

對(duì)于消息驅(qū)動(dòng)模型而言,消息節(jié)點(diǎn)將不再直接觸發(fā)收件箱存儲(chǔ)操作。

融云特別設(shè)計(jì)了一個(gè)環(huán)狀消息隊(duì)列,通過內(nèi)存搭配外部緩存的方式,完成最近N條消息的緩存,并通過對(duì)消息存儲(chǔ)模型優(yōu)化,完成熱點(diǎn)數(shù)據(jù)的快速讀寫。對(duì)消息的下行,則做聚合處理,保障客戶端能夠處理大量消息變更通知,并且盡量減少交互次數(shù),也讓消息的拉取變得更快速、精準(zhǔn)。移步【融云全球互聯(lián)網(wǎng)通信云】免費(fèi)體驗(yàn)。

會(huì)話驅(qū)動(dòng)模型則是在消息驅(qū)動(dòng)模型的基礎(chǔ)之上,做進(jìn)一步的優(yōu)化。

首先,消息節(jié)點(diǎn)不會(huì)再通知客戶端拉取消息,而是通過觸發(fā)實(shí)時(shí)會(huì)話,通知客戶端會(huì)話發(fā)生變更。而這里的實(shí)時(shí)會(huì)話,則是實(shí)現(xiàn)客戶端訂閱機(jī)制的基礎(chǔ),讓客戶端可以只獲知已訂閱的會(huì)話變更消息,從而進(jìn)一步縮小需要處理的會(huì)話以及消息數(shù)量。

其次,客戶端在收到會(huì)話變更通知后,會(huì)根據(jù)通知,判斷是否要發(fā)起會(huì)話消息查詢操作。如果是,則按照一定的機(jī)制查詢最新或特別范圍的消息。

除消息分發(fā)層面的優(yōu)化外,對(duì)存儲(chǔ)的優(yōu)化也非常關(guān)鍵。融云超級(jí)群的所有服務(wù),均按照業(yè)務(wù)維度進(jìn)行一致性哈希分發(fā)。比如,上行服務(wù)可以按照群ID或channel ID做哈希,分發(fā)服務(wù)可以按照接收方ID做哈希。核心目標(biāo)在于確保熱數(shù)據(jù)的命中,優(yōu)先使用內(nèi)存、LRU緩存、再使用分布式緩存、磁盤冷存儲(chǔ)。

APP、群組、信令級(jí)別的流控,則是另一重保障,它將一個(gè)看似無邊界的產(chǎn)品需求,轉(zhuǎn)化為了可琢磨、可實(shí)現(xiàn)的技術(shù)問題。因此,雖然流控不是超級(jí)群實(shí)現(xiàn)方案的重點(diǎn),但依然不可或缺。

整體而言,融云的超級(jí)群構(gòu)建方案有四個(gè)要點(diǎn):

弱化原發(fā)件箱/收件箱模型,尤其是收件箱,以極大提升讀寫性能,避免因I/O而產(chǎn)生的性能瓶頸;

通過"變更通知"聚合等方式,盡量減少終端與服務(wù)端的交互次數(shù),減少因網(wǎng)絡(luò)交互而產(chǎn)生的延時(shí);

設(shè)計(jì)專用數(shù)據(jù)結(jié)構(gòu)(環(huán)形隊(duì)列),并設(shè)置內(nèi)存、外部緩存等多級(jí)緩存結(jié)構(gòu),提升超大規(guī)模下的消息分發(fā)存儲(chǔ)速度,并提供快速查詢能力;

通過會(huì)話驅(qū)動(dòng)模型,進(jìn)一步減少網(wǎng)絡(luò)交互過程中,待傳輸?shù)臄?shù)據(jù)量。

那么,有了以上方案,是否就可以構(gòu)建出一個(gè)“超級(jí)群”呢?顯然還不夠,在超級(jí)群的場(chǎng)景之下,IM底層技術(shù)能力的積累可能更為重要。移步【融云全球互聯(lián)網(wǎng)通信云】免費(fèi)體驗(yàn)。

03IM底層技術(shù)能力與網(wǎng)絡(luò)層性能優(yōu)化

如果要解讀融云超級(jí)群所依賴的IM基礎(chǔ)能力,恐怕一本迷你書也寫不完,其粗略架構(gòu)圖如下:

融云超級(jí)群,讓微博、貼吧聊天”實(shí)時(shí)“起來

但好在,關(guān)于超級(jí)群,我們只需重點(diǎn)關(guān)注其在網(wǎng)絡(luò)層面的依賴即可。

對(duì)于所有的IM服務(wù)而言,底層網(wǎng)絡(luò)的加速能力都是關(guān)鍵。融云的底層服務(wù)網(wǎng)絡(luò)全稱是融云全球通信網(wǎng)絡(luò)(以下簡(jiǎn)稱為SD-CAN,Software Defined - Communication Accelerate Network),集合了BGP anycast、SD-WAN、對(duì)等連接、動(dòng)態(tài)CDN、智能DNS等多種網(wǎng)絡(luò)加速方式。

對(duì)于超級(jí)群來說,SD-CAN允許客戶端SDK通過查詢和探測(cè)確定地域和運(yùn)營(yíng)商以及最后一公里的網(wǎng)絡(luò)情況,將用戶就近調(diào)度到融云的網(wǎng)絡(luò)邊緣節(jié)點(diǎn),邊緣節(jié)點(diǎn)依據(jù)信令的請(qǐng)求目標(biāo)地址投遞到路由節(jié)點(diǎn),完成數(shù)據(jù)匯集,再由路由節(jié)點(diǎn)識(shí)別并轉(zhuǎn)發(fā)到對(duì)應(yīng)的數(shù)據(jù)中心。移步【融云全球互聯(lián)網(wǎng)通信云】免費(fèi)體驗(yàn)。

舉個(gè)例子,如果北美用戶要訪問中國(guó)國(guó)內(nèi)的數(shù)據(jù)中心,典型的兩條路徑是:

北美用戶->直接連接->國(guó)內(nèi)數(shù)據(jù)中心接入服務(wù)->業(yè)務(wù)服務(wù);

北美用戶-> anycast ->北美數(shù)據(jù)中心邊緣節(jié)點(diǎn)->北美數(shù)據(jù)中心路由節(jié)點(diǎn)-> SD-WAN/對(duì)等連接->國(guó)內(nèi)數(shù)據(jù)中心路由節(jié)點(diǎn)->國(guó)內(nèi)數(shù)據(jù)中心接入服務(wù)->業(yè)務(wù)服務(wù)。

客戶端會(huì)按照服務(wù)下發(fā)的策略,做并行探測(cè)并同時(shí)建立連接。對(duì)最優(yōu)鏈路的選擇,依賴于建連延遲、心跳間隔、鏈路發(fā)送接收狀況等信息。服務(wù)器也會(huì)定期檢查連接的健康度,主動(dòng)關(guān)閉長(zhǎng)尾連接,結(jié)合客戶端的重連機(jī)制,一起保障對(duì)最優(yōu)鏈路的調(diào)用。

04PaaS產(chǎn)品接近完備,或?qū)⑻钛a(bǔ)元宇宙到來前的空白

除了技術(shù)實(shí)現(xiàn),挑戰(zhàn)也出現(xiàn)在產(chǎn)品設(shè)計(jì)層面。

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

這也反映了用戶在超級(jí)群場(chǎng)景下的真正需求:我或許會(huì)希望在一個(gè)有數(shù)十萬網(wǎng)友的超級(jí)群中建立社交關(guān)系,但卻不希望被數(shù)十萬消息打擾生活。

此外,對(duì)于融云來說,超級(jí)群是個(gè)PaaS產(chǎn)品,這意味著要為客戶端留下充裕的可定制空間,在不同的場(chǎng)景,對(duì)信息推送的方式、邏輯、頻率都有不同的要求。同時(shí),將信息和聊天結(jié)合的場(chǎng)景,一般都有多端的需求。不同的平臺(tái),比如Android、iOS、Web等,在海量消息的網(wǎng)絡(luò)請(qǐng)求和存儲(chǔ)方面都有不同的技術(shù)特點(diǎn),甚至同平臺(tái)不同廠商的推送通道特性也不同,這些都需要一一考慮。移步【融云全球互聯(lián)網(wǎng)通信云】免費(fèi)體驗(yàn)。

最近幾年,社交領(lǐng)域的新興公司新增不多,整體增長(zhǎng)呈下降趨勢(shì)。這一方面是因?yàn)榱髁肯蝾^部高度集中,擠壓了新玩家的空間;另一方面也是因?yàn)槿鄙傩履J?,大家仍在圍繞存量用戶做競(jìng)爭(zhēng)。

超級(jí)群這一新應(yīng)用形態(tài),可能會(huì)對(duì)社交軟件整體的發(fā)展,產(chǎn)生巨大的牽引作用,從而帶來新的機(jī)會(huì)。同時(shí),PaaS產(chǎn)品的完備,也標(biāo)志著實(shí)現(xiàn)產(chǎn)品創(chuàng)新的技術(shù)基礎(chǔ)已經(jīng)夯實(shí),這或?qū)⒃诋a(chǎn)品層面,填補(bǔ)從微信、語聊房邁入元宇宙的最后一段空白。移步【融云全球互聯(lián)網(wǎng)通信云】免費(fèi)體驗(yàn)。

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