0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

即時通訊系統(tǒng)為什么選擇 GaussDB(for?Redis)?

jf_81200783 ? 來源: jf_81200783 ? 作者: jf_81200783 ? 2023-06-27 23:07 ? 次閱讀

每當(dāng)網(wǎng)絡(luò)上爆出熱點新聞,混跡于各個社交媒體的小伙伴們?nèi)奸_啟了討論模式。一條消息的產(chǎn)生是如何在群聊中傳遞的呢?讓我們一起來探索即時通訊系統(tǒng)(IM)的原理。

IM 系統(tǒng)架構(gòu)的原理

當(dāng)你在群聊“相親相愛一家人”中,發(fā)送了一條“我找到女朋友了,今天帶回家吃飯”,你自然是希望全家人都收到你的喜訊,為你女朋友的到來分頭準(zhǔn)備。那么正常的流程應(yīng)該是這樣:遍歷群成員、查詢每個成員的在線狀態(tài)、如果小伙伴們在線則實時進行推送,如果小伙伴們不在線則暫存至離線庫待上線后主動拉取。

這種模式就是傳統(tǒng)的 IM 架構(gòu),由于發(fā)送成功的消息不會落入離線庫,因此聊天記錄多端漫游無法實現(xiàn)。如果在線用戶推送發(fā)生異常,會導(dǎo)致個別人員丟失關(guān)鍵發(fā)言,錯失重要信息。為了保證消息存儲的可靠性,我們對 IM 系統(tǒng)架構(gòu)進行了優(yōu)化,不管成員是否在線都要先把消息和發(fā)送對象存儲起來,再進行推送。流程變成:遍歷群成員、為群聊的每一個人對應(yīng)的消息隊列都存一份消息、查詢每個成員的在線狀態(tài)、對在線成員進行推送。這就是所謂的寫擴散模型。

這里顯然還存在一個問題,我們向每個小伙伴的消息隊列中都存儲了相同的“我找到女朋友了,今天帶回家吃飯”消息,對磁盤和帶寬造成了很大的浪費,這是寫擴散的最大弊端。所以我們繼續(xù)優(yōu)化,群消息實體存儲一份,用戶只存消息ID索引。流程優(yōu)化為:遍歷群聊的成員、先存一份消息實體、群聊所有人都存一份 ID引用、查詢每個成員的在線狀態(tài)、對在線成員進行推送。這就是所謂的讀擴散模型。

簡單總結(jié)下:

1.讀擴散:讀取操作很重,寫入操作很輕,資源消耗相對小一些。

2.寫擴散:讀取操作很輕,寫入操作很重,資源消耗相對大一些。

IM 系統(tǒng)架構(gòu)優(yōu)化實踐

接下來,讓我們使用 GaussDB(forRedis)來實現(xiàn)一個簡單的 IM 應(yīng)用。

wKgaomSa-0OALs7nAAD14-4tW8Q465.png

使用 GaussDB(forRedis)的 List 類型實現(xiàn)一個消息隊列,防止發(fā)送端瞬時高流量會壓爆消息處理模塊;

收到消息后,先生成一個全局唯一 ID 標(biāo)識該信息,將消息 ID 和消息內(nèi)容存入 String 類型的消息存儲庫中,如果消息字段復(fù)雜也可以考慮使用 Hash 類型;

對于消息中可索引的信息,將消息的索引信息存入 Zset 類型的消息索引庫中,這樣無論是接收者還是發(fā)送者,都可以按照一定規(guī)則對歷史消息進行檢索;

通過查詢 Set 類型的消息關(guān)系群組庫,查詢該信息的接收者集合,這個集合可以根據(jù)一定的規(guī)則動態(tài)增刪;

將消息 ID 推入 Stream 類型的消息同步庫,每個 Stream 對象對應(yīng)一個接收者,接收者可以通過 XRANG 命令獲取一個范圍內(nèi)的未讀信息 ID;

最后,接收者再通過這組 ID,從消息存儲庫中讀取消息原始內(nèi)容,即完成了一次消息傳遞。

WhyGaussDB(forRedis)?

IM 系統(tǒng)有哪些痛點?高斯 Redis 如何解決這些痛點?

開源 Redsi 數(shù)據(jù)庫可靠性差,甚至丟數(shù)據(jù),會直接導(dǎo)致 IM 系統(tǒng)癱瘓。

GaussDB(forRedis)對數(shù)據(jù)進行分片,在故障場景下可以自動進行接管,最多可以滿足 N-1 個計算節(jié)點故障;存儲層使用華為自研的企業(yè)級存儲池 DFVPool,基于分布式、強一致、高性能的先進架構(gòu),實現(xiàn) 3AZ6 副本存儲,保證了在任何時間點的數(shù)據(jù)強一致,故障情況下數(shù)據(jù)不丟失。

大流量、高并發(fā)場景如何支持連接管理,按業(yè)務(wù)況分散壓力?

GaussDB(forRedis)可以滿足 IM 系統(tǒng)對可用性的要求,客戶端程序通過 ELB 接入 GaussDB(forRedis)實例,可實現(xiàn)自動負載均衡。

突發(fā)的高流量、大量的歷史消息數(shù)據(jù)如何處理?

GaussDB(forRedis)采用先進的存算分離架構(gòu),在 IM 系統(tǒng)持續(xù)運營的過程中,如果出現(xiàn)突發(fā)流量,可以迅速對計算層資源進行秒級擴縮容,快速扛住流量尖峰;歷史消息持續(xù)增長時,也可以單獨對存儲層資源大小進行秒級動態(tài)調(diào)整,最高可擴容至 PB 級。

GaussDB(forRedis)廣泛適用于社交媒體、游戲、電商、推薦系統(tǒng)等領(lǐng)域,在海量并發(fā)場景具備極強的高可用能力。如果你需要一款穩(wěn)定可靠的高性能企業(yè)級 KV 數(shù)據(jù)庫,不妨試試 GaussDB(forRedis)。

審核編輯黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 通訊系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    68

    瀏覽量

    12158
  • 華為云
    +關(guān)注

    關(guān)注

    3

    文章

    2343

    瀏覽量

    17105
收藏 人收藏

    評論

    相關(guān)推薦

    手機對講即時通訊系統(tǒng)

      手機對講即時通訊系統(tǒng)    IP集群調(diào)度系統(tǒng)提供了手機到手機、手機到PC、PC到手機、PC到PC的多媒體協(xié)同通信能力,可以
    發(fā)表于 07-28 22:22

    即時通訊軟件哪家好?企業(yè)即時通訊怎么選擇

    `隨著企業(yè)信息高速發(fā)展,公有云即時通訊軟件,其安全和娛樂性的隱患,在企業(yè)內(nèi)部溝通中的效率日趨低下,導(dǎo)致內(nèi)部管理混亂。浪費了時間和精力的同時,又拖低了工作效率。對于大型企業(yè)來說,日常企業(yè)即時通訊產(chǎn)生
    發(fā)表于 08-09 15:16

    即時通訊是怎么做到的?

    的PC機,這樣雙方的即時文字消息就不通過 IM服務(wù)器中轉(zhuǎn),而是通過網(wǎng)絡(luò)進行點對點的直接通訊,這稱為對等通訊方式(Peer To Peer) 。在商用即時通訊
    發(fā)表于 01-21 10:41

    玩轉(zhuǎn)OpenHarmony社交場景:即時通訊平臺

    的內(nèi)部私有化。設(shè)備端:DAYU200(RK3568)開發(fā)板,OpenHarmony 3.1 release系統(tǒng)。二、即時通訊實現(xiàn)原理想要實現(xiàn)多個設(shè)備之間的無障礙即時通訊,需要多臺終端設(shè)備、終端應(yīng)用和服務(wù)
    發(fā)表于 01-03 15:46

    多服務(wù)器分布式即時通訊系統(tǒng)模型的設(shè)計

    即時通訊是當(dāng)前Internet 最流行的通訊方式之一,為克服傳統(tǒng)的單服務(wù)器模式的一些缺點,本文提出一種新的即時通訊系統(tǒng)模型。該系統(tǒng)模型采用多
    發(fā)表于 09-11 16:46 ?25次下載

    Lotus即時通訊工具將與雅虎Google實現(xiàn)互通

    ????1月24日消息,根據(jù)達成的交易,IBM公司Lotus Sametime即時通訊服務(wù)的用戶將能夠與AOL、雅虎的即時通訊用戶“交談”。
    發(fā)表于 03-07 20:47 ?776次閱讀

    即時通訊詳解

    即時通訊詳解1. 引言 2. 即時通訊背景知識
    發(fā)表于 08-05 09:55 ?3015次閱讀

    Android平臺簡易即時通訊方案

    論文簡單介紹Android平臺的特性,主要闡述了基于Android平臺簡易即時通訊(IM)的作用和功能以及實現(xiàn)方法。
    發(fā)表于 02-21 10:27 ?5103次閱讀
    Android平臺簡易<b class='flag-5'>即時通訊</b>方案

    環(huán)信即時通訊

    Android環(huán)信即時通訊。。。。。。。。。。。。。。。。
    發(fā)表于 05-17 16:41 ?1次下載

    基于XMPP的即時通訊系統(tǒng)設(shè)計方案

    在這個快節(jié)奏的時代,互聯(lián)網(wǎng)對人們的生活帶來了極大的便利,人們的交流方式不在局限于面對面的交談或者周期漫長的書信,通信方式越來越多樣化而且越來越簡單。即時通訊是隨著網(wǎng)絡(luò)技術(shù)的高速發(fā)展而興起的一種
    發(fā)表于 11-03 14:51 ?6次下載
    基于XMPP的<b class='flag-5'>即時通訊</b><b class='flag-5'>系統(tǒng)</b>設(shè)計方案

    區(qū)塊鏈即時通訊系統(tǒng)開發(fā),區(qū)塊鏈直播聊天平臺開發(fā)

    區(qū)塊鏈即時通訊系統(tǒng)開發(fā),區(qū)塊鏈直播聊天平臺開發(fā)數(shù)字資產(chǎn)交易所模式和玩法還是那樣,法幣OTC交易所,幣幣撮合交易所,但是最近也是有一個模式比較新穎,那就是數(shù)字資產(chǎn)抵押平臺,這個模式還是比較有市場
    發(fā)表于 05-30 20:24 ?542次閱讀

    區(qū)塊鏈IM即時通訊系統(tǒng)開發(fā)技術(shù)

    決這一現(xiàn)狀我們開發(fā)了一款區(qū)塊鏈IM即時通訊系統(tǒng),IM即時通訊系統(tǒng)主要是有直播、對接交易所、空間、商城等各種管理應(yīng)用,一站式進行數(shù)字資產(chǎn)交易管理的即時
    發(fā)表于 06-07 15:46 ?2898次閱讀

    企業(yè)為什么需要即時通訊,它會帶來哪些優(yōu)勢

    企業(yè)需要即時通訊的一個很重要的理由就是企業(yè)即時通訊的組織架構(gòu)有助于內(nèi)部溝通聯(lián)結(jié)。 企業(yè)即時通訊特有的組織結(jié)構(gòu)樹型目錄與成員名片,這些特點對于能夠使異地辦公的公司成員也能夠如同處在同一間辦公室,無需
    發(fā)表于 07-19 10:51 ?1251次閱讀

    拳頭產(chǎn)品|海泰虎訊,新一代安全即時通訊系統(tǒng)

    即時通訊系統(tǒng)是目前互聯(lián)網(wǎng)上最為流行的通信方式,各種各樣的即時通訊軟件也層出不窮。隨著移動辦公的快速普及,即時通訊軟件在移動辦公中得到越來越廣泛的應(yīng)用,已經(jīng)成為日常辦公軟件的一部分。
    的頭像 發(fā)表于 11-01 08:57 ?548次閱讀

    基于NAT穿透P2P即時通訊系統(tǒng)的設(shè)計與實現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《基于NAT穿透P2P即時通訊系統(tǒng)的設(shè)計與實現(xiàn).pdf》資料免費下載
    發(fā)表于 10-27 09:44 ?0次下載
    基于NAT穿透P2P<b class='flag-5'>即時通訊</b><b class='flag-5'>系統(tǒng)</b>的設(shè)計與實現(xiàn)