中國(guó)品牌,讓東南亞感受“消費(fèi)升級(jí)”小紅書本地“坐抖望團(tuán)”CrowdStrike“全球滅霸響指”事件后續(xù),德國(guó) 10% 企業(yè)更換安全供應(yīng)商導(dǎo)致 1TB 數(shù)據(jù)泄露后,迪士尼宣布棄用 Slack 平臺(tái)合合信息啟信產(chǎn)業(yè)大腦攜手市北新區(qū)打造“一企一畫像”平臺(tái),加速數(shù)字化轉(zhuǎn)型重慶:力爭(zhēng)今年智能網(wǎng)聯(lián)新能源汽車產(chǎn)量突破 100 萬輛,到 2027 年建成萬億級(jí)產(chǎn)業(yè)集群微信iOS最新版上線:iPhone用戶可在朋友圈發(fā)實(shí)況照片了蘋果有線耳機(jī)或?qū)⑼.a(chǎn)沖上熱搜!閑魚相關(guān)搜索量暴漲384%2024 vivo開發(fā)者大會(huì)官宣:OriginOS 5/自研藍(lán)河系統(tǒng)2降臨真·AI程序員來了,阿里云「通義靈碼」全面進(jìn)化,全流程開發(fā)僅用幾分鐘東方甄選烤腸全網(wǎng)銷量及銷售額領(lǐng)先鴻蒙PC要來了 界面很漂亮!余承東:目前華為PC將是最后一批搭載Windows上半年中國(guó)AR/VR出貨23.3萬臺(tái),同比下滑了 29.1%IDC:2024 上半年中國(guó) AR / VR 頭顯出貨 23.3 萬臺(tái),同比下滑 29.1%英特爾AI加速器Gaudi3下周發(fā)布,挑戰(zhàn)NVIDIA統(tǒng)治地位!大屏技術(shù)邂逅千年色彩美學(xué)!海信激光電視成為電影《只此青綠》官方合作伙伴OpenAI將最新AI模型o1擴(kuò)展到企業(yè)和教育領(lǐng)域三星新專利探索AR技術(shù)新應(yīng)用:檢測(cè)屏幕指紋殘留,提高手機(jī)安全性猛瑪傳奇C1:直播圖傳技術(shù)的革新者JFrog推出首個(gè)運(yùn)行時(shí)安全解決方案,實(shí)現(xiàn)從代碼到云的全面軟件完整性和可追溯性
  • 首頁 > 企業(yè)IT頻道 > 軟件即服務(wù)

    環(huán)信:基于大規(guī)模邊緣計(jì)算的千萬級(jí)聊天室技術(shù)實(shí)踐

    2023年03月06日 15:29:46   來源:中文科技資訊

      當(dāng)前直播成為一種流行趨勢(shì),帶貨直播,網(wǎng)紅帶貨,明星在線演唱會(huì)等,進(jìn)一步使得直播聊天室變成了一個(gè)當(dāng)前必備的能力,面向大型,超大型的直播場(chǎng)景,技術(shù)上也在不斷的進(jìn)行迭代更新。相對(duì)于集中式,單中心的方案,不僅僅在服務(wù)的穩(wěn)定性,承載的用戶量級(jí)上有了顯著的提升,而且在成本上也能有大幅的降低,同時(shí)用戶體驗(yàn)也變得更好。至于業(yè)界一直嘗試的CDN的聊天室方案同樣存在著本身的局限性,不同于音視頻消息單個(gè)內(nèi)容相對(duì)較小,瞬時(shí)性訪問量較大,重復(fù)訪問的概率幾乎沒有等特定,使得CDN的實(shí)踐方案無法滿足該場(chǎng)景的需求。

      1、大規(guī)模邊緣聊天室如何工作?

      大型邊緣聊天室的工作過程非常的簡(jiǎn)單,用戶 UserA 加入聊天室 X,用戶 UserB 也加入聊天室 X,此時(shí)用戶 UserA 向聊天室發(fā)送消息 hello,服務(wù)端接收到該消息后,會(huì)向 UserA 發(fā)送一個(gè)接收成功的回應(yīng),服務(wù)端同時(shí)會(huì)將消息進(jìn)行擴(kuò)散到所有在同一個(gè)聊天室中的人,此示例中為 UserB。

      2、場(chǎng)景簡(jiǎn)單化但制作不簡(jiǎn)單

      每個(gè)環(huán)節(jié)都需要額外關(guān)注

      1.如何穩(wěn)定,高效的保持住百萬甚至千萬的長(zhǎng)連接

      2.如何進(jìn)行聊天室成員狀態(tài)的維護(hù)

      3.如何進(jìn)行消息路由的選擇

      3、如何穩(wěn)定超大規(guī)模的連接?

      主要通過兩個(gè)方向來解決這個(gè)問題,單機(jī)的連接數(shù)和集群的規(guī)模。

      1.單機(jī)負(fù)載

      關(guān)于單機(jī)連接的提升上,單機(jī)的連接數(shù)支撐雖然可以達(dá)到很高的數(shù)值,但是也要考慮是否為有效連接,因?yàn)楦哓?fù)載的連接和低負(fù)載的連接是完全不同的概念,且不說其他的業(yè)務(wù)邏輯,單純其中的心跳保持邏輯,就會(huì)造成 CPU 和 IO 非常大的負(fù)擔(dān),這些還是完全沒有談及業(yè)務(wù)邏輯的基礎(chǔ)上,故而在單機(jī)負(fù)載上,一般采用的是不超過 10W 的單機(jī)負(fù)載。

      2.集群規(guī)模

      集群的水平擴(kuò)展能力決定了集群的規(guī)模,下圖是服務(wù)端的整體部署結(jié)構(gòu):

      上圖中綠色的區(qū)域?yàn)樨?fù)責(zé)客戶端長(zhǎng)連接的區(qū)域,所有的%20IMS(IM%20Server)提供的服務(wù)完全相同,而且相互之間完全沒有任何的依賴關(guān)系;上圖中的黃色是部署在%20IDC%20中,主要服務(wù)聊天室的路由管理以及消息的路由分發(fā)。IMS%20可以認(rèn)為是可以無限水平擴(kuò)展的架構(gòu)設(shè)計(jì),所以集群的規(guī)?梢哉J(rèn)為是無限的。集群的規(guī)模上來了,尤其是在邊緣側(cè)的負(fù)載調(diào)度又稱為了一個(gè)新問題,基于公司穩(wěn)定而高效的邊緣調(diào)度方式,通過客戶端和服務(wù)端的完美配合實(shí)現(xiàn)高效,用戶無感的連接體驗(yàn)。

      4、關(guān)鍵:連接承載的瞬時(shí)數(shù)量

      對(duì)于長(zhǎng)連接的場(chǎng)景,連接保持固然重要,連接能夠承載的瞬時(shí)數(shù)量也是非常關(guān)鍵的指標(biāo)。而這個(gè)點(diǎn)也同樣的是單機(jī)和集群的兩個(gè)不同維度的問題,集群的角度則和上面的連接保持大致相同,而針對(duì)單機(jī)的連接創(chuàng)建和斷開,則比單純的保持住連接要復(fù)雜一些,需要考慮到登錄時(shí)的鑒權(quán)問題,聊天室的特定場(chǎng)景,還需要考慮退出時(shí)的聊天室清理工作。

      簡(jiǎn)單介紹一下整體的策略,主要將創(chuàng)建和斷開時(shí)發(fā)生的事情分成了兩大類,一類是需要同步去執(zhí)行的動(dòng)作,另外一類是可以進(jìn)行異步處理的,則放入到異步隊(duì)列進(jìn)行處理。策略本身比較簡(jiǎn)單,但是真正在執(zhí)行的過程中能夠做到,而且能夠隨著版本的迭代一直保持策略則顯的比較困難,為了達(dá)到該目標(biāo),我們堅(jiān)持著一個(gè)原則,凡是要添加到同步邏輯中的內(nèi)容,需要給明相應(yīng)的理由,并且需要團(tuán)隊(duì)內(nèi)部同步討論,否則只能采用異步隊(duì)列的方式,這里并不是說異步隊(duì)列的事情不需要審核或者討論,而且同步的需要明確的針對(duì)性的處理,這樣才能保證同步邏輯的清晰以及策略的可持續(xù)性。

      5、如何進(jìn)行成員狀態(tài)的維護(hù)?

      聊天室屬于多人聊天的一種特定的形態(tài),消息僅僅擴(kuò)散到在線的用戶,用戶離線則自動(dòng)退出聊天室,并且再次上線后也不會(huì)接收到離線時(shí)的消息。至于像是一些斷網(wǎng)了重新連接后還能繼續(xù)觀看直播的場(chǎng)景,進(jìn)去時(shí)能夠看到一些歷史消息的情況,則是通過其他的手段實(shí)現(xiàn)自動(dòng)訂閱,拉取歷史的能力。

      成員的分級(jí)管理

      上圖中的左側(cè)為聊天室與用戶直接對(duì)應(yīng)的關(guān)系表,也就是圖中的用戶聊天室信息,同步會(huì)產(chǎn)生聊天室成員信息,后續(xù)在消息路由的情況下,會(huì)高頻的使用該結(jié)構(gòu)查詢聊天室的人員,進(jìn)一步進(jìn)行消息的擴(kuò)散。分層的核心點(diǎn)在于節(jié)點(diǎn)聊天室的維護(hù),只在當(dāng)前節(jié)點(diǎn)的聊天室列表發(fā)生變化時(shí)才會(huì)修改節(jié)點(diǎn)聊天室信息,并且將該變更同步到%20IDC,也即是上一次路由表中。這里只有第一個(gè)人加入聊天室和最后一個(gè)人退出聊天室時(shí)才會(huì)觸發(fā)相應(yīng)的邏輯。

      上面是進(jìn)一步抽離了關(guān)于分級(jí)注冊(cè)的邏輯,由每一級(jí)將當(dāng)前層級(jí)的聊天室對(duì)應(yīng)關(guān)系注冊(cè),保活到上一級(jí)的聊天室關(guān)系中,我們也僅僅驗(yàn)證了%203%20層,至于更多的層級(jí)理論上是可行的,但是不推薦使用,每增加一層復(fù)雜度和對(duì)異常情況的處理就會(huì)翻倍,對(duì)于后續(xù)介紹的消息投遞則必須是所有的層級(jí)都正常工作才能將消息正常投遞下來。

      成員的心跳保持

      本節(jié)點(diǎn)上的聊天室信息由于都是內(nèi)存級(jí)別的操作,所以一般出問題的概率比較小。保障其一致性比較簡(jiǎn)單,但是跨節(jié)點(diǎn),尤其是跨機(jī)房的,跨地區(qū)的網(wǎng)絡(luò)交互,很難保證每次都是正常的,所以在同步相關(guān)的信息的時(shí)候,添加了類似的;顧C(jī)制,異步隊(duì)列機(jī)制,重試機(jī)制等來進(jìn)一步保障業(yè)務(wù)的穩(wěn)定性,當(dāng)然還有及時(shí)異常處理機(jī)制,畢竟不能讓用戶進(jìn)入了聊天室,但是確一直不能接收消息,還不能恢復(fù)當(dāng)前的狀態(tài)。

      6、如何進(jìn)行消息路由的選擇?

      多級(jí)路由

      基于上面的分級(jí)注冊(cè)的邏輯,可以看出消息的下發(fā)也是分級(jí)進(jìn)行下發(fā)的,這種設(shè)計(jì)上減少了每層的下發(fā)的難度,舉個(gè)例子如果有%20200IMS,10%20個(gè)%20Edge,則極端情況下%20IDC%20需要分發(fā)的數(shù)量為%2010%20個(gè),每個(gè)%20Edge%20的分發(fā)數(shù)量為%2020%20個(gè),如果只有一級(jí)的話,則%20IDC%20需要分發(fā)%20200%20個(gè)請(qǐng)求,這個(gè)看著不是一個(gè)很大的數(shù)字,但是不要忘記這個(gè)僅僅為一條消息的分發(fā)量,而如果有%205000%20請(qǐng)求則是%20200*5000=1,000,000%20則有百萬級(jí)別的分發(fā)量,通過分級(jí)的方式能夠有效的降低各個(gè)層級(jí)的復(fù)雜度,同時(shí)也能盡量減少跨機(jī)房,跨地區(qū)的調(diào)用,進(jìn)一步降低風(fēng)險(xiǎn)。分級(jí)分發(fā)雖然帶來了好處,也使得路徑的維護(hù)變得相對(duì)復(fù)雜很多。

      消息推拉結(jié)合

      聊天室的場(chǎng)景,大部分場(chǎng)景下是采用直接推送消息的方式。大型的聊天室消息的過濾,篩選以及丟棄的策略的方式也是非常復(fù)雜的問題。至于消息到投遞階段之后,直接推消息給客戶端,這樣消息的即時(shí)性確實(shí)得到了保證,但是客戶端的情況是不同的,機(jī)器的配置不同,機(jī)器當(dāng)時(shí)的運(yùn)行狀態(tài)不同,網(wǎng)絡(luò)狀況也是不同的,所以在這種情況,需要支持客戶端能夠根據(jù)自己的情況進(jìn)行拉取一定數(shù)量的消息,這樣能夠更加靈活的適應(yīng)不同的場(chǎng)景。這些策略雖然說這簡(jiǎn)單,但是真正的落實(shí)到線上的服務(wù),還是有很多的細(xì)節(jié)點(diǎn)需要考慮,真正做到穩(wěn)定還是比較困難的,畢竟這種特定的場(chǎng)景期望很好的監(jiān)控也是比較困難的。我們也是先從簡(jiǎn)單的固定模式的推拉方式進(jìn)行處理,后續(xù)根據(jù)具體的情況進(jìn)行更加細(xì)節(jié)性的調(diào)優(yōu)。

      固定路由

      針對(duì)一些明確大型直播的場(chǎng)景需求,也提供了一種簡(jiǎn)單的路由方式,從上述的聊天室路由管理,可以看出出問題的情況還是可能存在的,所以針對(duì)已知特別大的聊天室場(chǎng)景,該場(chǎng)景的話,可以認(rèn)為能夠覆蓋到所有的 IMS 服務(wù),所以聊天室的分級(jí)注冊(cè)就顯得有點(diǎn)多余,所以聊天室級(jí)別的注冊(cè)變更為節(jié)點(diǎn)的注冊(cè),依賴系統(tǒng)的服務(wù)注冊(cè)發(fā)現(xiàn)默認(rèn)就完成相關(guān)的內(nèi)容,這樣整個(gè)事情就變得非常的簡(jiǎn)單高效了。

      這種方式有其在這種超大型聊天室的優(yōu)勢(shì),也存在其自身的瓶頸點(diǎn),所以的消息不管是否在本節(jié)點(diǎn)有用戶加入了該聊天室,消息都會(huì)投遞到該節(jié)點(diǎn),故而每個(gè) IMS 都要處理所有的消息,盡管很多的消息是沒有下發(fā)投遞的需求。方案沒有萬能的,所以這兩種處理方式是互補(bǔ)的,并不是互斥的。

      7、大規(guī)模邊緣聊天室 VS 中心集群

      大規(guī)模邊緣聊天室的方案,相較于傳統(tǒng)的中心集群式的聊天室,從技術(shù)的大的架構(gòu)是沒有本質(zhì)的區(qū)別,依然是多級(jí)路由,消息推拉結(jié)合的方式。

      不同的點(diǎn)在于部署的形態(tài)不同,而恰恰是這些的不同使得很多東西發(fā)生了變化。大規(guī)模邊緣聊天室的方式,增加了邊緣的連通性,能夠在更加靠近用戶的地方進(jìn)行就近部署,達(dá)到解決最后五公里的目的。并且能夠利用各個(gè)機(jī)房的資源,從而達(dá)到百萬,千萬級(jí)別甚至更高量級(jí)的用戶數(shù)量。大規(guī)模邊緣聊天室的方案在實(shí)施的過程中,對(duì)成本的降低也起到了關(guān)鍵作用,由于中心機(jī)房一般保證可用性和穩(wěn)定性,一般采用的都是 BGP 的網(wǎng)絡(luò),成本相對(duì)邊緣機(jī)房的非 BGP 網(wǎng)絡(luò)要貴很多。系統(tǒng)整體可用性的角度,大規(guī)模邊緣聊天室相比于中心集群式的聊天室,對(duì)于機(jī)房故障的容災(zāi)性更好。當(dāng)然這里主要介紹了大規(guī)模聊天室的優(yōu)點(diǎn),任何一種方案都不是全能的,有其優(yōu)點(diǎn)就有其自身的劣勢(shì)。大規(guī)模邊緣聊天室部署形態(tài)復(fù)雜,對(duì)于運(yùn)維體系的要求相對(duì)較高,服務(wù)間網(wǎng)絡(luò)穩(wěn)定性也比較難以保障,所以一般適用于對(duì)大規(guī)模的,公開的聊天室,對(duì)于比價(jià)多精細(xì)玩法的場(chǎng)景,或者小規(guī)模不太適合,反而增加了很多的不確定性。

      8、大規(guī)模邊緣聊天室 VS CDN 方式

      針對(duì)大規(guī)模聊天室,曾考慮過是否可以使用業(yè)界比較成熟的 CDN 分發(fā)技術(shù)。在具體的實(shí)踐過程中發(fā)現(xiàn),針對(duì)這種小包,而且不會(huì)重復(fù)分發(fā)的場(chǎng)景,這里指的是同一個(gè)消息,不太會(huì)被一段時(shí)間不斷的獲取,聊天室的場(chǎng)景一般是當(dāng)時(shí)收到了就收到了,如果沒有收到,后續(xù)也不太期望需要收到消息。而且 CDN 的方案都是將消息聚合后,客戶端定時(shí)拉取的方式,消息存在重疊性,延時(shí)性等不能滿足客戶的需求。

      技術(shù)難度上,加入 1000 萬的聊天室,每 10s 重新刷新一次消息,也有將近 100W 的 QPS 請(qǐng)求,這對(duì)于 CDN 系統(tǒng)也是一個(gè)非常大的調(diào)整,而且即使接入多家的 CDN 也會(huì)存在比較高比例的超時(shí)。更何況 10S 的延時(shí),對(duì)于有些場(chǎng)景已經(jīng)能夠明顯感知到了。

      大規(guī)模聊天室相對(duì)于集中式,單中心的方案,不僅僅在服務(wù)的穩(wěn)定性,承載的用戶量級(jí)上有了顯著的提升,而且在成本上也能有大幅的降低,同時(shí)用戶體驗(yàn)也變得更好。至于業(yè)界一直嘗試的 CDN 的聊天室方案同樣存在著本身的局限性,不同于音視頻消息單個(gè)內(nèi)容相對(duì)較小,瞬時(shí)性訪問量較大,重復(fù)訪問的概率幾乎沒有等特定,使得 CDN 的實(shí)踐方案無法滿足該場(chǎng)景的需求。

      8、典型案例:卡特爾世界杯,邊緣網(wǎng)絡(luò)+低時(shí)延,支持1800萬用戶同時(shí)在線大規(guī)模聊天室,消息下發(fā)每秒4000萬條;

      2022卡塔爾世界杯已經(jīng)圓滿落幕,期間,環(huán)信針對(duì)運(yùn)營(yíng)商客戶對(duì)于世界杯的直播聊天室進(jìn)行專業(yè)改造,并且?guī)椭蛻魧?shí)現(xiàn)千萬級(jí)聊天室的技術(shù)支持。解決了客戶對(duì)于世界杯賽事直播海量用戶在線的需求,通過架構(gòu)的調(diào)整,能夠同時(shí)支撐1800萬用戶同時(shí)在線,消息的處理能力達(dá)到了5000QPS,消息的下發(fā)量達(dá)到了4000萬+/秒的級(jí)別。環(huán)信整體方案不僅能夠支持到如此大規(guī)模的量級(jí),而且成本也能夠比肩CDN的方案,機(jī)器能夠進(jìn)行高效的擴(kuò)縮容。

      作者:張超  環(huán)信即時(shí)通訊云后臺(tái)研發(fā)負(fù)責(zé)人,負(fù)責(zé)環(huán)信IM消息平臺(tái)的架構(gòu)設(shè)計(jì)工作,有超過9年的即時(shí)通訊行業(yè)經(jīng)驗(yàn)。

      文章內(nèi)容僅供閱讀,不構(gòu)成投資建議,請(qǐng)謹(jǐn)慎對(duì)待。投資者據(jù)此操作,風(fēng)險(xiǎn)自擔(dān)。

    [No. X016-1]
    分享到微信

    即時(shí)

    TCL實(shí)業(yè)榮獲IFA2024多項(xiàng)大獎(jiǎng),展示全球科技創(chuàng)新力量

    近日,德國(guó)柏林國(guó)際電子消費(fèi)品展覽會(huì)(IFA2024)隆重舉辦。憑借在核心技術(shù)、產(chǎn)品設(shè)計(jì)及應(yīng)用方面的創(chuàng)新變革,全球領(lǐng)先的智能終端企業(yè)TCL實(shí)業(yè)成功斬獲兩項(xiàng)“IFA全球產(chǎn)品設(shè)計(jì)創(chuàng)新大獎(jiǎng)”金獎(jiǎng),有力證明了其在全球市場(chǎng)的強(qiáng)大影響力。

    新聞

    敢闖技術(shù)無人區(qū) TCL實(shí)業(yè)斬獲多項(xiàng)AWE 2024艾普蘭獎(jiǎng)

    近日,中國(guó)家電及消費(fèi)電子博覽會(huì)(AWE 2024)隆重開幕。全球領(lǐng)先的智能終端企業(yè)TCL實(shí)業(yè)攜多款創(chuàng)新技術(shù)和新品亮相,以敢為精神勇闖技術(shù)無人區(qū),斬獲四項(xiàng)AWE 2024艾普蘭大獎(jiǎng)。

    企業(yè)IT

    重慶創(chuàng)新公積金應(yīng)用,“區(qū)塊鏈+政務(wù)服務(wù)”顯成效

    “以前都要去窗口辦,一套流程下來都要半個(gè)月了,現(xiàn)在方便多了!”打開“重慶公積金”微信小程序,按照提示流程提交相關(guān)材料,僅幾秒鐘,重慶市民曾某的賬戶就打進(jìn)了21600元。

    3C消費(fèi)

    “純臻4K 視界煥新”——愛普生4K 3LCD 激光工程投影

    2024年3月12日,由愛普生舉辦的主題為“純臻4K 視界煥新”新品發(fā)布會(huì)在上海盛大舉行。

    研究

    2024全球開發(fā)者先鋒大會(huì)即將開幕

    由世界人工智能大會(huì)組委會(huì)、上海市經(jīng)信委、徐匯區(qū)政府、臨港新片區(qū)管委會(huì)共同指導(dǎo),由上海市人工智能行業(yè)協(xié)會(huì)聯(lián)合上海人工智能實(shí)驗(yàn)室、上海臨港經(jīng)濟(jì)發(fā)展(集團(tuán))有限公司、開放原子開源基金會(huì)主辦的“2024全球開發(fā)者先鋒大會(huì)”,將于2024年3月23日至24日舉辦。