億級消息中心架構(gòu)方案,寫得太好了 !
目標(biāo)
技術(shù)目標(biāo): 上行到消息隊列api吞吐量10000條/秒,下發(fā)第三方平臺1000條/秒(僅平臺自身處理能力,第三方看第三方處理能力極限指標(biāo)為準(zhǔn));保證消息中心100%高可用。
業(yè)務(wù)目標(biāo): 對接新需求,明確消息中心的負(fù)責(zé)人(架構(gòu)組),及時響應(yīng)業(yè)務(wù)處理或者反饋。
產(chǎn)品目標(biāo): 支持消息處理狀態(tài)查詢,簡單的消息規(guī)范消息對接(初級開發(fā)5分鐘實(shí)現(xiàn)接入成本),規(guī)范化消息模板辦理。
需求原型

功能需求:
支持阿里云短信,微信公眾號,app推送,統(tǒng)一站內(nèi)信,企業(yè)微信(應(yīng)用,個人)等第三方推送。
包含消息模板管理,賬戶管理,消息搜索,批量消息發(fā)送等。
技術(shù)方案
業(yè)務(wù)部署交互圖

業(yè)務(wù)核心邏輯交互圖

技術(shù)選型 | 優(yōu)勢 | 缺點(diǎn) |
rocketmq | 【性能好】單個吞吐量能達(dá)10萬/秒,并行推送能力(消費(fèi)能力)可以通過rocketmq的分區(qū)(分區(qū)細(xì)節(jié)需要設(shè)計)數(shù)量進(jìn)行擴(kuò)展。性能上面是一個亮點(diǎn)和優(yōu)勢 | 【部分功能不支持】一旦進(jìn)入rocketmq隊列,推送消息不可撤回。很多數(shù)據(jù)庫層面的功能特性(mq不支持)在設(shè)計上就會舍棄。 |
es | 【性能好】可以支撐上億的數(shù)據(jù)量的關(guān)鍵詞搜索,實(shí)時同步的性能和吞吐量都還可以。 | 【并發(fā)插入能力略差】假設(shè)消息下發(fā)吞吐量高,需要批量對消息進(jìn)行同步,這樣可以優(yōu)化es吞吐量。高并發(fā)對es同步,es承載能力可能會出問題(可以投入測試進(jìn)行驗(yàn)證)。 |
概要設(shè)計描述
1. rocketmq 設(shè)計正常消息隊列(正常投遞消息),重試消息隊列(支持多種延遲機(jī)制,發(fā)送失敗重試的消息),發(fā)送結(jié)果消息隊列(發(fā)送超限或者成功的消息)。
2. es 同步以上三種隊列的消息,以最終一致性(最晚時間戳校驗(yàn))保持消息信息最新。
3. mysql 僅支持管理模板,賬號等基礎(chǔ)管理功能。
底層框架設(shè)計、運(yùn)維層面描述
1. 統(tǒng)一網(wǎng)關(guān): spring cloud gateway/kong,僅做api層面的路由支持。
2. 基礎(chǔ)框架: 選定jar包版本,es,rocketmq,實(shí)時報警,性能監(jiān)控 對這些接口做二次封裝,es支持sql模式插入查詢;rocketmq做底層實(shí)現(xiàn)剝離。
參考: bsf 統(tǒng)一基礎(chǔ)框架 https://gitee.com/yhcsx/csx-bsf-all
3. 業(yè)務(wù)框架: 標(biāo)準(zhǔn)輸入輸出http rpc等業(yè)務(wù)框架工具或協(xié)議層面支持。
4. 服務(wù)高可用:k8s&docker 及devops 線上一體化部署的支持,要做到一鍵發(fā)布,一鍵回滾,滾動發(fā)布,不停機(jī)發(fā)版。
作者 | 車江毅
來源 | cnblogs.com/chejiangyi/p/14884931.html

