衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

聊聊消息推送架構設計

jf_ro2CN3Fa ? 來源:技術自由圈 ? 2023-09-04 15:52 ? 次閱讀

構建企業級統一基礎推送服務,支持通過多渠道推送,能夠統一集成的電子郵件、短信、聊天、釘釘、企業微信和其他公共社交應用:

聊天 - 微信Wechat/QQ

站內推送通知(移動設備和Web瀏覽器)

站外推送通知(移動設備,APP沒有開啟)

短信(如登錄密碼、營銷活動)

電子郵件

釘釘

企業微信

企業級統一基礎推送服務,是一個通用特性,適用于所有現代分布式應用,無論采用何種編程語言和技術。

推送能力的演進

第一階段(模塊化):各自為政、各自封裝

企業內部,早期業務量比較少,各系統基本都是有自己的推送模塊,類型也是五花八門:

聊天模塊

短信模塊

電子郵件模塊

websocket 模塊

各自封裝模塊比較簡單,但是實現分散、各系統模塊的質量也很難統一保證。

第二階段(框架化):集成框架

為了減少重復性設計、開發成本, 設計了統一的推送框架

同一套微服務框架,共用一個統一的推送框架

為了解決上述分散實現的問題,企業內部統一實現了一個綜合各類推送功能的基礎庫,供業務方統一調用。

聊天基礎starter

短信基礎starter

電子郵件基礎starter

websocket 基礎starter

于是,我們把 springboot-starter的邏輯封裝到了服務治理框架內,微服務服務啟動時,每一個服務對各種的starter進行運維管理、配置管理。

第三階段(服務化):推送服務

集成到框架,每一套服務,都需要重復性的解決3高問題。

推送服務,數據量大,需要解決跨庫查詢問題

推送服務,性能要求高,需要解決高并發問題

大數據量、并發量高,意味著:

硬件資源投入大

運維成本高

這樣的基礎服務,需要進行沉淀,剝離,集中成統一的、基礎服務,由專門團隊負責維護、迭代、運維。降低重復投入、重復建設成本, 真正的降本增效。

于是, 推送框架 演進為 推送服務

基于 Spring Boot + MyBatis Plus + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能

項目地址:https://github.com/YunaiV/ruoyi-vue-pro

視頻教程:https://doc.iocoder.cn/video/

推送服務在業務系統中的位置

一個業務應用, 基本上有很多原子服務編排、整合而來,最終構建出一個完整的架構圖。

接入層,這是外部請求進入內部系統的門戶,所有的請求都必須通過 API 網關。

應用層,也被稱為聚合層,它為相關業務提供聚合接口,并調用中臺服務進行組合。

原子服務,包括就是原子技術服務,原子業務服務,根據業務需求提供相關的接口。原子服務為整個架構提供可復用的能力。

例如,在B站視頻網站平臺上,評論服務作為一項原子服務,在B站的視頻、文章、社區都需要,那么為了提高復用性,評論服務就可以獨立為原子服務,不能與特定需求緊密耦合

在這種情況下, 評論服務,需要供一種可以適應不同場景的復用能力。

7a9eae8e-4a0b-11ee-97a6-92fbcf53809c.png

注意:請點擊圖像以查看清晰的架構圖!

類似的,文件存儲、數據存儲、推送服務、身份驗證服務等功能,都會沉淀為原子服務,業務開發人員,在原子服務基礎上,進行編排、配置、組合,可以快速構建業務應用。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能

項目地址:https://github.com/YunaiV/yudao-cloud

視頻教程:https://doc.iocoder.cn/video/

推送服務功能要求

發送通知

對通知進行優先級排序

根據客戶的保存偏好發送通知

支持單個/簡單的通知消息和批量通知消息

各種通知的分析用例

通知消息的報告

推送非功能性需求(NFR)

高性能:qps > 1W

高可用性(HA):99.99%

低延遲:TP99 在10ms以下

高擴展:可擴展/可插拔的設計,以便添加更多適配器和提供商,與所有通知模塊的API集成以及與客戶端和服務提供商/供應商的外部集成

跨平臺:支持Android/iOS移動設備和桌面/筆記本電腦的Web瀏覽器

自伸縮:可在本地(VMware Tanzu)和 AWS、GCP 或 Azure 等公共云服務上擴展負載

推送系統設計架構

7ad0313e-4a0b-11ee-97a6-92fbcf53809c.png

注意:請點擊圖像以查看清晰的架構圖!

這些解決方案設計的考慮因素和組件包括:

1. 通知客戶端

這些客戶端通過 API 調用請求單個和批量消息。它們將向簡單和批量通知服務發送通知消息。

簡單通知客戶端:專門用于發送單個通知的客戶端,負責向用戶發送單一通知。這些客戶端通常用于向特定用戶發送重要通知,例如密碼找回或賬戶異常提醒。

批量通知客戶端:專門用于發送批量通知的客戶端,負責向用戶批量推送通知。這些客戶端通常用于需要通知大量用戶的場景,例如企業內部通知或營銷活動。

2. 通知服務

作為入口點的這些服務,通過暴露 REST API 與客戶端互動。

它們負責構建通知消息,通過調用"模板服務"。這些消息將使用"驗證服務"進行驗證。

簡單通知服務:該服務將提供 API,主要負責處理簡單通知請求,提供與后端服務集成的 API,以便將通知發送給用戶。這種服務通常用于處理較少的通知請求,例如針對特定用戶或事件的簡單通知。

批量通知服務:該服務將提供 API,主要負責處理批量通知請求,提供與后端服務集成的 API,以便批量發送通知。這種服務通常用于處理大量的通知請求,例如企業內部的批量通知或營銷活動的批量推送。

此服務還將管理通知消息。它將發送的消息持久化到數據庫并維護活動日志。

可以使用這些服務的 API 重新發送同一條消息。

它將提供添加/更新/刪除和查看舊消息和新消息的 API。

它還將提供 Web 儀表板,該儀表板應具有篩選選項,以根據不同的條件(如日期范圍、優先級、模塊用戶、用戶組等)篩選消息。

3. 模板服務

此服務主要負責所有可用的一次性密碼(OTP)、短信、電子郵件、聊天以及其他推送通知消息的模板管理。

它還提供了 REST API,以便創建、更新、刪除和管理模板。

除此之外,它還將提供一個用戶界面(UI)的儀表板頁面,使用戶能從網絡控制臺檢查和管理各種消息模板。

4. 消息分發服務

定時分發服務:

該服務將提供API來安排立即或指定時間的通知。可以是以下任何一種:

分鐘

每小時

每天

每周

每月

每年

自定義頻率等。

還可能有其他自動觸發的服務,基于預定時間進行消息觸發。

消息驗證服務:

此服務全權負責根據業務規定和預期格式對通知信息進行核實。批量通知需由授權的系統管理員同意。

消息優先級服務:

該服務負責對通知進行優先級排序,分為高、中、低三個等級。

通知信息具有較高的優先級和有時間限制的到期時間,它們將始終以較高優先級發送。

"通用出口處理器"會接收消息并根據相同的優先級從高、中和低三個不同的隊列中發送和處理。

在非工作時間,可以以低優先級發送批量通知。

在交易過程中的應用程序通知可以發送到中優先級,如電子郵件等。企業可以根據通知的重要性確定優先級。

5. 事件優先級隊列(消息隊列)

此服務提供事件中心功能,負責接收通知服務的高、中、低三個優先級的信息。

它會根據業務的優先級來發送和接收通知。企業可以根據通知的重要性來設定優先級。

服務內部包含三個主題,用于根據業務優先級接收和發送通知:

低優先級:主要用于在非工作時間發送批量通知。

中優先級:適用于在交易過程中發送的應用程序通知,如電子郵件等。

高優先級:通知信息具有較高的優先級和有時間限制的到期時間,它們將始終以較高優先級發送。關注公工眾號:碼猿技術專欄,回復關鍵詞:1111 獲取阿里內部Java性能調優手冊!

6. 通用出站處理程序

該服務通過輪詢事件優先級隊列來接收事件中心中的通知信息,并根據其優先級進行處理。

高優先級的通知會優先處理"高"隊列,依次類推。

最后,它通過事件中心將通知信息發送到特定的適配器。

此外,該服務還從用戶選擇服務中獲取目標用戶/應用程序,以便進行通知的分發。

在處理過程中,通用出口處理器會根據事件的優先級進行相應的操作,確保重要事件得到優先處理。

這樣,企業可以根據通知的優先級來確定處理順序,從而提高通知的處理效率。

除此之外, 通用出站處理程序,還能進行消息的進一步按照通道類型進行分發:

該服務將消息發送到各種支持的適配器。

這些適配器會根據不同的設備(如桌面/移動設備)和通知類型(如短信/OTP/電子郵件/聊天/推送通知)進行轉換。

7. 通知適配器

這些轉換器將從消息隊列(rocketmq)接收傳入信息并根據其所支持的格式傳遞給外部合作伙伴。

以下是一些轉換器,根據需求可以增加更多:

QQ 通知適配器服務

微信Wechat 聊天通知適配器服務

應用內通知適配器服務

電子郵件適配器服務

短信適配器服務

OTP 適配器服務

8. 通道供應商

這些是外部的 SAAS(云上/本地)服務提供商,利用它們的基礎設施和技術實現實際的通知傳遞。

它們可能是像 AWS SNS、MailChimp 等的付費推送通道服務。

QQ 供應商集成服務

微信Wechat 供應商集成服務

應用推送通知供應商集成服務

電子郵件供應商集成服務

短信供應商集成服務

9. 用戶選擇服務

該服務提供選擇目標用戶和各種應用程序模塊的功能。

這可能包括將批量消息發送到特定的用戶組或不同的應用程序模塊。

可能是 AD/IAM/eDirectory/用戶數據庫/用戶組,具體取決于客戶的偏好。

在服務內部,它將使用"用戶配置文件服務"API 來消費和檢查客戶的通知偏好。

10. 用戶配置文件服務

此服務提供各種功能,包括管理用戶配置文件及其偏好設置。

還管理內部用戶標識,和外部通道標識之間的關聯關系

釘釘用戶標識 和 用戶標識 關聯關系

企業微信 用戶標識 和 用戶標識 關聯關系

用戶和郵箱的關聯關系

等等

它還將提供取消訂閱通知以及通知接收頻率等功能。

"通知服務"將依賴于此服務,以便根據用戶的通知偏好來發送通知。

此外,該服務還可以用于統計和分析用戶對通知的偏好,以幫助企業優化通知策略。

11. 分析服務

該處理器將負責執行所有的分析工作,識別通知使用情況、趨勢并生成報告。

它將從分析數據庫(Cassandra)和通知數據庫中提取所有最終的通知信息,用于分析和報告目的。

以下是一些用例:

每天/每秒的總通知數

哪個通知系統使用最頻繁

消息的平均大小和頻率

基于優先級過濾消息等等...

12. 通知跟蹤器

此服務將持續監視事件中心隊列并跟蹤所有發送的通知。

它捕獲通知的元數據,如傳輸時間、傳送狀態、通信渠道、消息類型等。

13. 通知數據庫:Mysql數據庫集群

通知數據庫,用于存儲庫用于存儲所有通知信息,包括發送時間、狀態等。

它包括一個數據庫集群,其中領導者用于執行所有寫操作,讀取操作則在讀取副本/跟隨者上進行。

這個數據庫群集將持久化所有通知,供分析和報告使用。

它基于“寫入更多,讀取更少”的理念。

它能提供良好的性能和低延遲,適應大量的通知,因為它內部處理大量的寫操作,并與其他數據庫節點同步,保持高可用性和可靠性的冗余數據/消息。

在任何節點崩潰的情況下,消息將始終可用。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據庫
    +關注

    關注

    7

    文章

    3846

    瀏覽量

    64686
  • MySQL
    +關注

    關注

    1

    文章

    829

    瀏覽量

    26743
  • 架構設計
    +關注

    關注

    0

    文章

    32

    瀏覽量

    6976

原文標題:聊聊 消息推送 架構設計

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    面向服務的整車EE架構(SOA)設計開發咨詢服務

    經緯恒潤多年來一直致力于為客戶提供先進電子電氣架構解決方案,近年來,經緯恒潤在國內率先開展整車SOA架構的技術研發和業務布局,參與多款SOA架構下量產車型的研發,積累了豐富的SOA架構設
    的頭像 發表于 12-12 15:11 ?669次閱讀
    面向服務的整車EE<b class='flag-5'>架構</b>(SOA)設計開發咨詢服務

    架構性需求的基礎知識

    架構設計經驗增多,才領悟這句話的正確性。 什么是? 首先,什么是需求? 需求是一個多義詞,它的準確所指往往取決于你所處的位置。在汽車行業我們往往會利用ASPICE的V模型來找到自己需求的來源。比如做詳細設計,其需求來源
    的頭像 發表于 11-15 11:01 ?267次閱讀
    <b class='flag-5'>架構</b>性需求的基礎知識

    聊聊std::move函數和std::forward函數

    今天我們聊聊Modern cpp的兩個非常重要的概念移動語義和轉發引用。
    的頭像 發表于 11-05 16:58 ?386次閱讀

    GPU服務器AI網絡架構設

    眾所周知,在大型模型訓練中,通常采用每臺服務器配備多個GPU的集群架構。在上一篇文章《高性能GPU服務器AI網絡架構(上篇)》中,我們對GPU網絡中的核心術語與概念進行了詳盡介紹。本文將進一步深入探討常見的GPU系統架構
    的頭像 發表于 11-05 16:20 ?610次閱讀
    GPU服務器AI網絡<b class='flag-5'>架構設</b>計

    深入理解 Llama 3 的架構設

    在人工智能領域,對話系統的發展一直是研究的熱點之一。隨著技術的進步,我們見證了從簡單的基于規則的系統到復雜的基于機器學習的模型的轉變。Llama 3,作為一個假設的先進對話系統,其架構設計融合了
    的頭像 發表于 10-27 14:41 ?640次閱讀

    邊緣計算架構設計最佳實踐

    邊緣計算架構設計最佳實踐涉及多個方面,以下是一些關鍵要素和最佳實踐建議: 一、核心組件與架構設計 邊緣設備與網關 邊緣設備 :包括各種嵌入式設備、傳感器、智能手機、智能攝像頭等,負責采集原始數據
    的頭像 發表于 10-24 14:17 ?539次閱讀

    架構與設計 常見微服務分層架構的區別和落地實踐

    架構風格越傾向于清晰的職責定位,且讓領域模型成為架構的核心。 基于這些架構風格,在軟件架構設計過程中又有非常多的架構分層模型。 傳統三層
    的頭像 發表于 10-22 15:34 ?312次閱讀
    <b class='flag-5'>架構</b>與設計 常見微服務分層<b class='flag-5'>架構</b>的區別和落地實踐

    谷歌正式向Pixel設備推送Android 15穩定版

    10月17日最新資訊,谷歌今日已正式向Pixel系列設備推送Android 15穩定版更新。目前,已有部分Pixel設備成功完成升級,而更大范圍的推送預計將在本周末進行。
    的頭像 發表于 10-17 16:31 ?509次閱讀

    谷歌開始推送Android 15穩定版

    近日,谷歌正式向Pixel系列設備推送了Android 15穩定版操作系統。目前,已有部分Pixel設備率先完成了系統升級,預計本周晚些時候,更大規模的更新推送將全面展開。
    的頭像 發表于 10-17 16:12 ?1669次閱讀

    扁平電纜(FFC)為電氣架構帶來新的發展空間

    車輛架構正處在一個關鍵的轉型期。隨著電動汽車的興起,面臨著一次架構設計上的重大突破,這代表了重新思考電氣和電子架構設計的絕佳機會。同時,由于混合動力和內燃機車輛中仍存在大量現有內容,這使得采用創新
    的頭像 發表于 07-18 08:27 ?1794次閱讀
    扁平電纜(FFC)為電氣<b class='flag-5'>架構</b>帶來新的發展空間

    《MediaTek天璣9300:全大核CPU架構解析白皮書》重磅發布!

    MediaTek 天璣 9300 旗艦芯憑借創新的“全大核” CPU 架構設計和突破性性能,贏得了諸多好評。
    的頭像 發表于 05-06 10:00 ?580次閱讀
    《MediaTek天璣9300:全大核CPU<b class='flag-5'>架構</b>解析白皮書》重磅發布!

    交換芯片架構設

    交換芯片的架構設計是網絡設備性能和功能的關鍵。一個高效的交換芯片架構能夠處理大量的數據流量,支持高速數據傳輸,并提供先進的網絡功能。
    的頭像 發表于 03-21 16:28 ?608次閱讀

    交換芯片架構設

    交換芯片架構設計是網絡通信中的關鍵環節,它決定了交換機的性能、功能和擴展性。
    的頭像 發表于 03-18 14:12 ?820次閱讀

    不能獨立開發,是因為你不懂軟件架構

    不想錯過,記得右上角-查看公眾號-設為星標,摘下星星送給我嵌入式軟件架構設計一般采用分層思想,稱為“分層架構”。part1一、什么是分層架構?分層架構(LayeredArchitect
    的頭像 發表于 03-15 08:09 ?1803次閱讀
    不能獨立開發,是因為你不懂軟件<b class='flag-5'>架構</b>

    【RISC-V開放架構設計之道|閱讀體驗】+ 閱讀深體驗

    本人沒有芯片設計,或者指令集方面較深的基礎知識,不過認真看這本書也令我學到了不少。 書中一開始便提到RISC-V的目標是稱為一款通用的指令集架構:需要適合設計各種規模的處理器,能兼容各種流行的軟件棧
    發表于 03-05 22:01
    网络百家乐的陷阱| 2024年九宫八卦吉位| 百家乐猪仔路| 百家乐官网机器昀程序| 网上百家乐作弊不| 利来国际城| 百家乐官网导航| ican博彩通| 澳门百家乐秘诀| 宝龙线上娱乐城| 做生意属虎的朝向| 华球网| 百家乐乐城皇冠| 万豪娱乐| 百家乐下对子的概率| 九江市| 百家乐赌场娱乐城大全| 百家乐代理合作| 百家乐官网博娱乐网提款速度快不 | 百家乐大赢家书籍| 申扎县| 百家乐投注平台信誉排名| 百家乐官网技巧发布| 下载百家乐官网的玩法技巧和规则| 路劲太阳城金旭园| 百家乐官网77scs官| 沙龙国际娱乐网站| 真人百家乐现金游戏| 阜平县| 百家乐博赌场娱乐网规则| 赌场百家乐官网玩法介绍| 威尼斯人娱乐城筹码| 博彩网百家乐官网的玩法技巧和规则 | 丰禾国际| 澳门百家乐现场真人版| 百家乐官网开户送10彩金| 百家乐在线赌场娱乐网规则| 单张百家乐官网论坛| 全讯网即时线路| 风水24山读法| 百家乐官网靠什么赢|