億級消息中心架構方案概述
目标
技術目标: 上行到消息隊列api吞吐量10000條/秒,下發第三方平台1000條/秒(僅平台自身處理能力,第三方看第三方處理能力極限名額為準);保證消息中心100%高可用。
業務目标: 對接新需求,明确消息中心的負責人(架構組),及時響應業務處理或者回報。
産品目标: 支援消息處理狀态查詢,簡單的消息規範消息對接(初級開發5分鐘實作接入成本),規範化消息模闆辦理。
需求原型
功能需求:
支援阿裡雲短信,微信公衆号,app推送,統一站内信,企業微信(應用,個人)等第三方推送。
包含消息模闆管理,賬戶管理,消息搜尋,批量消息發送等。
技術方案
業務部署互動圖
業務核心邏輯互動圖
<col>
技術選型
優勢
缺點
rocketmq
【性能好】單個吞吐量能達10萬/秒,并行推送能力(消費能力)可以通過rocketmq的分區(分區細節需要設計)數量進行擴充。性能上面是一個亮點和優勢
【部分功能不支援】一旦進入rocketmq隊列,推送消息不可撤回。很多資料庫層面的功能特性(mq不支援)在設計上就會舍棄。
es
【性能好】可以支撐上億的資料量的關鍵詞搜尋,實時同步的性能和吞吐量都還可以。
【并發插入能力略差】假設消息下發吞吐量高,需要批量對消息進行同步,這樣可以優化es吞吐量。高并發對es同步,es承載能力可能會出問題(可以投入測試進行驗證)。
概要設計描述
1. rocketmq 設計正常消息隊列(正常投遞消息),重試消息隊列(支援多種延遲機制,發送失敗重試的消息),發送結果消息隊列(發送超限或者成功的消息)。
2. es 同步以上三種隊列的消息,以最終一緻性(最晚時間戳校驗)保持消息資訊最新。
3. mysql 僅支援管理模闆,賬号等基礎管理功能。
底層架構設計、運維層面描述
1. 統一網關: spring cloud gateway/kong,僅做api層面的路由支援。
2. 基礎架構: 標明jar包版本,es,rocketmq,實時報警,性能監控 對這些接口做二次封裝,es支援sql模式插入查詢;rocketmq做底層實作剝離。
參考: bsf 統一基礎架構 https://gitee.com/yhcsx/csx-bsf-all
3. 業務架構: 标準輸入輸出http rpc等業務架構工具或協定層面支援。
4. 服務高可用:k8s&docker 及devops 線上一體化部署的支援,要做到一鍵釋出,一鍵復原,滾動釋出,不停機發版。
by 車江毅
開源是一種态度,分享是一種精神,學習仍需堅持,進步仍需努力,.net生态圈因你我更加美好。