刷微博是許多人每天的“例行指部鍛煉”,一掃一劃,就能評論熱點話題,訂閱熱門動態(tài)。當然,也有不少人對明星不感興趣,轉(zhuǎn)而去刷Reddit、貼吧、虎撲、知識星球或是其他BBS社區(qū)。對于90、80后來說,這個被“刷”的對象可能是曾經(jīng)的即刻、糗百,天涯、貓撲。
可以說,“聚眾看熱鬧”是人類永恒不變的愛好,但我們看熱鬧的方式卻并不豐富:要么刷BBS社區(qū),要么扎進社交軟件的群聊。
不知你有沒有想過,如果將二者合二為一,讓微博、貼吧這樣的社區(qū),全部變成即時聊天,各個博主、吧友的動態(tài),全部以群聊消息的形式推送給你,你又可以即時地回復、互動,甚至和這些博主、吧友連麥視頻,情況會是怎樣的?
這將是一個超級社區(qū),或者更準確地說,這將是一個無人數(shù)上限的“超級群”。移步【融云全球互聯(lián)網(wǎng)通信云】免費體驗【融云超級群】
可這個“超級群”,實現(xiàn)起來將非常困難。在程序員看到產(chǎn)品設(shè)計的那一刻,就有精神崩潰的風險。
01真正的服務(wù)器壓力
“崩潰”主要源自技術(shù)挑戰(zhàn),更確切地說,是服務(wù)器面臨的巨大的讀寫壓力和存儲壓力。
微博曾出現(xiàn)過幾次著名的故障:趙麗穎領(lǐng)證、關(guān)曉彤官宣、王寶強離婚。在調(diào)侃微博崩潰的各種網(wǎng)絡(luò)段子背后,我們能看到的是,一個架構(gòu)師面對一條微博下幾秒新增數(shù)萬條評論,服務(wù)器壓力瞬間暴漲幾十倍的無奈身影。
與此類似的是直播彈幕的分發(fā)場景。無論是近期的視頻號五月天跨年演唱會,還是B站春晚,彈幕過百萬輕而易舉(“二零一九最美的夜”bilibili晚會彈幕超過170萬條)。
理論上講,每一條彈幕都要向直播間內(nèi)觀眾做全量分發(fā)。以五月天跨年演唱會為例,當晚有1,680萬人在線上觀看,如果保守假設(shè)當晚共發(fā)送100萬條彈幕,那么單是彈幕的寫操作,就至少要執(zhí)行16,800,000 x 1,000,000次。
因為實際支撐有困難,又要顧及用戶的屏幕根本無法同屏顯示上萬條評論,所以彈幕的轉(zhuǎn)發(fā)一般都是降級處理——分發(fā)一小部分給你看,其他略過。
而如果將微博評論、直播彈幕,全部“群聊化”,問題會更加恐怖?!叭毫幕焙?,產(chǎn)品形態(tài)成為“超級群”,問題進入IM場景,可以做相應的流控,但不能丟棄信息。且無論是微博評論還是直播彈幕,對信息上下文的關(guān)注度都不高,但這恰恰是IM關(guān)注的重點。
可以說,至少在3年以前,能夠系統(tǒng)解決這些問題并將其打磨為一個成熟產(chǎn)品的人不多。直到2018年,國外出現(xiàn)了一個名叫Discord的軟件,網(wǎng)友才體驗到了這種全新的社區(qū)形式。興趣社區(qū)、粉絲運營,你離Discord 只差一個「融云超級群」,移步【融云全球互聯(lián)網(wǎng)通信云】免費體驗。
Discord最初只服務(wù)于游戲語音連麥,但很快演化為一個超級社區(qū)。2021年,據(jù)CNN報道,Discord已有超過1.4億名注冊用戶,微軟正在談判以100億美元收購它。
而在npr的采訪中,美國芝加哥地區(qū)的一名18歲少年表示,他2020年的大部分時間都在Discord上閑逛,并將其形容為“Reddit和群聊的混合體”。
元宇宙的支持者們也驚奇地發(fā)現(xiàn),所謂的“Discord模式”,不就是未來元宇宙虛擬社區(qū)的基礎(chǔ)模式么?在元宇宙里,總不能先加個500人的群再開始聊天吧。
拋開模式創(chuàng)新不談,如果要深究Discord的技術(shù)核心,恰恰就是我們前面所描述的“超級群”。而在2022年1月11日,融云也發(fā)布了一款名為“超級群”的PaaS產(chǎn)品,以此為例,我們或許能搞清楚,這種帶了點科幻色彩的未來社區(qū),究竟是如何實現(xiàn)的。興趣社區(qū)、粉絲運營,你離Discord 只差一個「融云超級群」,移步【融云全球互聯(lián)網(wǎng)通信云】免費體驗。
02超級群的設(shè)計架構(gòu)和實施方案
超級群的底層技術(shù)支撐能力,可以簡單分為兩部分來談,分別是超級群業(yè)務(wù)能力、IM底層技術(shù)能力。
超級群的業(yè)務(wù)能力,在架構(gòu)設(shè)計層面共分為四層,分別是加速網(wǎng)絡(luò)、接入層、核心服務(wù)層以及底層存儲。之所以要做這樣的劃分,是為了充分利用融云自身的統(tǒng)一加速網(wǎng)絡(luò)機制,保障網(wǎng)絡(luò)連通性以及連接質(zhì)量,讓超級群可以根據(jù)自身業(yè)務(wù)需求,在連接通道的基礎(chǔ)上,專心實現(xiàn)更高效的業(yè)務(wù)交互。
在融云,傳統(tǒng)的群消息建立在收發(fā)模型(收件箱、發(fā)件箱)的基礎(chǔ)上,獨立維護會話列表和歷史消息存儲。從用戶發(fā)送群消息,到群內(nèi)(成員數(shù)量為N )接收群消息。整個過程將產(chǎn)生四類消息:
1.一條發(fā)送方發(fā)件箱記錄;
2.N-1條接收方的收件箱記錄;
3.1條群歷史消息記錄;
4.N條會話列表記錄。
消息存儲投遞流程為:
終端A ->發(fā)送消息->接入服務(wù)->群管理(群消息上行) ->分發(fā)->群聊消息分發(fā)節(jié)點->消息節(jié)點->通知拉取(直接發(fā)送) ->終端B/C/D
在這樣的流程下,消息分發(fā)節(jié)點與消息節(jié)點交互密切,通常合并部署。同時,消息節(jié)點也會直接觸發(fā)收件箱、發(fā)件箱的消息存儲。
但在超級群的場景下,群成員數(shù)量理論上無上限,無論是消息的上行、下行,還是消息在存儲層的寫入和查詢,都將導致空前的服務(wù)承載壓力,以上方案因此不再適用。于是,融云在現(xiàn)有連接機制之上,針對超級群做了交互設(shè)計優(yōu)化,設(shè)計了兩種分發(fā)模型:分別叫做消息驅(qū)動模型和會話驅(qū)動模型。
對于消息驅(qū)動模型而言,消息節(jié)點將不再直接觸發(fā)收件箱存儲操作。
融云特別設(shè)計了一個環(huán)狀消息隊列,通過內(nèi)存搭配外部緩存的方式,完成最近N條消息的緩存,并通過對消息存儲模型優(yōu)化,完成熱點數(shù)據(jù)的快速讀寫。對消息的下行,則做聚合處理,保障客戶端能夠處理大量消息變更通知,并且盡量減少交互次數(shù),也讓消息的拉取變得更快速、精準。移步【融云全球互聯(lián)網(wǎng)通信云】免費體驗。
會話驅(qū)動模型則是在消息驅(qū)動模型的基礎(chǔ)之上,做進一步的優(yōu)化。
首先,消息節(jié)點不會再通知客戶端拉取消息,而是通過觸發(fā)實時會話,通知客戶端會話發(fā)生變更。而這里的實時會話,則是實現(xiàn)客戶端訂閱機制的基礎(chǔ),讓客戶端可以只獲知已訂閱的會話變更消息,從而進一步縮小需要處理的會話以及消息數(shù)量。
其次,客戶端在收到會話變更通知后,會根據(jù)通知,判斷是否要發(fā)起會話消息查詢操作。如果是,則按照一定的機制查詢最新或特別范圍的消息。
除消息分發(fā)層面的優(yōu)化外,對存儲的優(yōu)化也非常關(guān)鍵。融云超級群的所有服務(wù),均按照業(yè)務(wù)維度進行一致性哈希分發(fā)。比如,上行服務(wù)可以按照群ID或channel ID做哈希,分發(fā)服務(wù)可以按照接收方ID做哈希。核心目標在于確保熱數(shù)據(jù)的命中,優(yōu)先使用內(nèi)存、LRU緩存、再使用分布式緩存、磁盤冷存儲。
APP、群組、信令級別的流控,則是另一重保障,它將一個看似無邊界的產(chǎn)品需求,轉(zhuǎn)化為了可琢磨、可實現(xiàn)的技術(shù)問題。因此,雖然流控不是超級群實現(xiàn)方案的重點,但依然不可或缺。
整體而言,融云的超級群構(gòu)建方案有四個要點:
弱化原發(fā)件箱/收件箱模型,尤其是收件箱,以極大提升讀寫性能,避免因I/O而產(chǎn)生的性能瓶頸;
通過"變更通知"聚合等方式,盡量減少終端與服務(wù)端的交互次數(shù),減少因網(wǎng)絡(luò)交互而產(chǎn)生的延時;
設(shè)計專用數(shù)據(jù)結(jié)構(gòu)(環(huán)形隊列),并設(shè)置內(nèi)存、外部緩存等多級緩存結(jié)構(gòu),提升超大規(guī)模下的消息分發(fā)存儲速度,并提供快速查詢能力;
通過會話驅(qū)動模型,進一步減少網(wǎng)絡(luò)交互過程中,待傳輸?shù)臄?shù)據(jù)量。
那么,有了以上方案,是否就可以構(gòu)建出一個“超級群”呢?顯然還不夠,在超級群的場景之下,IM底層技術(shù)能力的積累可能更為重要。移步【融云全球互聯(lián)網(wǎng)通信云】免費體驗。
03IM底層技術(shù)能力與網(wǎng)絡(luò)層性能優(yōu)化
如果要解讀融云超級群所依賴的IM基礎(chǔ)能力,恐怕一本迷你書也寫不完,其粗略架構(gòu)圖如下:
但好在,關(guān)于超級群,我們只需重點關(guān)注其在網(wǎng)絡(luò)層面的依賴即可。
對于所有的IM服務(wù)而言,底層網(wǎng)絡(luò)的加速能力都是關(guān)鍵。融云的底層服務(wù)網(wǎng)絡(luò)全稱是融云全球通信網(wǎng)絡(luò)(以下簡稱為SD-CAN,Software Defined - Communication Accelerate Network),集合了BGP anycast、SD-WAN、對等連接、動態(tài)CDN、智能DNS等多種網(wǎng)絡(luò)加速方式。
對于超級群來說,SD-CAN允許客戶端SDK通過查詢和探測確定地域和運營商以及最后一公里的網(wǎng)絡(luò)情況,將用戶就近調(diào)度到融云的網(wǎng)絡(luò)邊緣節(jié)點,邊緣節(jié)點依據(jù)信令的請求目標地址投遞到路由節(jié)點,完成數(shù)據(jù)匯集,再由路由節(jié)點識別并轉(zhuǎn)發(fā)到對應的數(shù)據(jù)中心。移步【融云全球互聯(lián)網(wǎng)通信云】免費體驗。
舉個例子,如果北美用戶要訪問中國國內(nèi)的數(shù)據(jù)中心,典型的兩條路徑是:
北美用戶->直接連接->國內(nèi)數(shù)據(jù)中心接入服務(wù)->業(yè)務(wù)服務(wù);
北美用戶-> anycast ->北美數(shù)據(jù)中心邊緣節(jié)點->北美數(shù)據(jù)中心路由節(jié)點-> SD-WAN/對等連接->國內(nèi)數(shù)據(jù)中心路由節(jié)點->國內(nèi)數(shù)據(jù)中心接入服務(wù)->業(yè)務(wù)服務(wù)。
客戶端會按照服務(wù)下發(fā)的策略,做并行探測并同時建立連接。對最優(yōu)鏈路的選擇,依賴于建連延遲、心跳間隔、鏈路發(fā)送接收狀況等信息。服務(wù)器也會定期檢查連接的健康度,主動關(guān)閉長尾連接,結(jié)合客戶端的重連機制,一起保障對最優(yōu)鏈路的調(diào)用。
04PaaS產(chǎn)品接近完備,或?qū)⑻钛a元宇宙到來前的空白
除了技術(shù)實現(xiàn),挑戰(zhàn)也出現(xiàn)在產(chǎn)品設(shè)計層面。
由于超級群中的信息量太大,需要支持將群分割為不同的頻道,類似傳統(tǒng)的topic或channel。即使相同的群和群成員,通過不同的頻道,仍然能將會話、消息、未讀數(shù)分門別類聚合。用戶可以更關(guān)注自己感興趣的部分,提升用戶黏性。
這也反映了用戶在超級群場景下的真正需求:我或許會希望在一個有數(shù)十萬網(wǎng)友的超級群中建立社交關(guān)系,但卻不希望被數(shù)十萬消息打擾生活。
此外,對于融云來說,超級群是個PaaS產(chǎn)品,這意味著要為客戶端留下充裕的可定制空間,在不同的場景,對信息推送的方式、邏輯、頻率都有不同的要求。同時,將信息和聊天結(jié)合的場景,一般都有多端的需求。不同的平臺,比如Android、iOS、Web等,在海量消息的網(wǎng)絡(luò)請求和存儲方面都有不同的技術(shù)特點,甚至同平臺不同廠商的推送通道特性也不同,這些都需要一一考慮。移步【融云全球互聯(lián)網(wǎng)通信云】免費體驗。
最近幾年,社交領(lǐng)域的新興公司新增不多,整體增長呈下降趨勢。這一方面是因為流量向頭部高度集中,擠壓了新玩家的空間;另一方面也是因為缺少新模式,大家仍在圍繞存量用戶做競爭。
超級群這一新應用形態(tài),可能會對社交軟件整體的發(fā)展,產(chǎn)生巨大的牽引作用,從而帶來新的機會。同時,PaaS產(chǎn)品的完備,也標志著實現(xiàn)產(chǎn)品創(chuàng)新的技術(shù)基礎(chǔ)已經(jīng)夯實,這或?qū)⒃诋a(chǎn)品層面,填補從微信、語聊房邁入元宇宙的最后一段空白。移步【融云全球互聯(lián)網(wǎng)通信云】免費體驗。
(免責聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準確性及可靠性,但不保證有關(guān)資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負任何法律責任。
任何單位或個人認為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,應及時向本網(wǎng)站提出書面權(quán)利通知或不實情況說明,并提供身份證明、權(quán)屬證明及詳細侵權(quán)或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實,溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )