厭煩被消息打擾,又怕突然間的安靜;
一、業(yè)務背景
微服務的架構體系中,會存在很多基礎服務,提供一些大部分服務都可能需要的能力,比如文件管理、MQ隊列、緩存機制、消息中心等等,這些服務需要提供各種可以復用的方法或者接口,以便其他業(yè)務服務可以快速調(diào)用;下面來看看消息通知的原理:

這里的消息不同于MQ隊列,是指業(yè)務側的通知機制,例如短信、郵件、系統(tǒng)消息等,在業(yè)務層面的需求很多,通常會封裝單獨的消息中心提供通知機制;
從流程上面看,消息通知是典型的生產(chǎn)-消費模式,業(yè)務側不斷的生產(chǎn)消息,消息中心在接收之后進行消費,把通知推送到相應的渠道中,很顯然這種邏輯具備很高的復用性。
二、消息通知
1、流程管理
消息通知的流程設計,在各個業(yè)務線中通過消息中心提供的接口方法,將不同場景下的消息內(nèi)容提交到消息中心,消息中心進行統(tǒng)一維護管理,并根據(jù)消息的來源和去向,適配相應的推送邏輯:

消息生產(chǎn):涉及到的場景很多,比如活動、營銷機制、系統(tǒng)通知、業(yè)務流轉、過期提醒等;
消息管理:對預發(fā)送消息的結構和參數(shù)進行校驗,并創(chuàng)建消息推送的任務,維護任務級別的推送管理,跟蹤消息的狀態(tài)周期;
消息消費:基于消息任務的結構,構建消息推送的主體內(nèi)容,并對接多個發(fā)送渠道,實現(xiàn)通知的高效觸達;
定時任務:消息可以直接即時推送,但如果是夜間定時任務觸發(fā),則要考慮推送延遲問題,將消息放在指定時段投遞;
渠道對接:通常不同的渠道意味著不同的場景,例如監(jiān)控推送釘釘,活動一般推送微信,賬戶變動發(fā)郵件,營銷走短信,業(yè)務則應用內(nèi)通知;
在整個流程中涉及到的模塊比較多,狀態(tài)的流轉也很復雜,但是通過消息中心進行統(tǒng)一標準管理和流入流出的跟蹤,也可以提供清晰的生命周期監(jiān)控和維護;
2、流程時序
在整個消息通知鏈路中,在不同的流轉節(jié)點中,無不涉及狀態(tài)的變化(即from.to狀態(tài)),這樣可以構成整個生命周期的視圖:

初始化:業(yè)務方構建簡單的消息結構,請求發(fā)送到消息中心后,初始化一個消息任務;
任務化:對消息發(fā)送請求進行校驗,并將消息轉換成一個標準的推送任務結構;
推送中:根據(jù)任務推送的時間周期類型,將任務構建成不同渠道的通知主體,從而進行渠道消息推送;
已完成:根據(jù)消息在渠道推送的狀態(tài)回調(diào),更新消息中心的任務完成狀態(tài),或者失敗重試;
大部分的消息通知機制都可以容忍一定的延遲性,所以消息中心完全可以解耦各個流程,引入MQ隊列或者異步機制,業(yè)務方只需要將請求發(fā)送到消息中心,之后由消息中心統(tǒng)一調(diào)度和管理即可;
3、結構設計
這里根據(jù)系統(tǒng)的實現(xiàn)過程和經(jīng)驗,給出一個數(shù)據(jù)結構的設計參考,用來對業(yè)務場景做簡單的維度描述:

消息模板:定義通知的主體結構,基于消息的參數(shù)模型,構建推送的消息內(nèi)容;
消息任務:消息中心管理和維護的主體結構,以任務的模式維護消息從生產(chǎn)到推送完成的整個狀態(tài)周期;
場景記錄:消息最終推送出去的內(nèi)容和場景分類,也可以簡單的理解為不同渠道的投遞記錄;
交互消息:強調(diào)消息在接收方是否觸達并且對消息產(chǎn)生了交互行為,例如會話,郵件回復,狀態(tài)關聯(lián)等;
三、實踐總結
最后還是站在技術實現(xiàn)的角度,總結一下消息通知機制中的一些關鍵問題:
生產(chǎn)消費:消息生產(chǎn)之后寫入消息中心的存儲容器,之后進行消費流程的管理,是業(yè)務解耦的常用手段;
任務管理:以任務的模式進行消息推送的調(diào)度,通過任務狀態(tài)的變化和控制,實現(xiàn)生命周期的管理;
狀態(tài)機:描述消息的流轉節(jié)點和狀態(tài),在不同的事件中觸發(fā)不同的狀態(tài)切換和轉移,并在狀態(tài)變化后銜接各種業(yè)務動作;
渠道對接:通常消息推送的渠道多是第三方平臺,所以在消息中心會接入諸多的渠道,例如微信、釘釘、短信等;
基礎封裝:作為分布式系統(tǒng)中的基礎功能,在封裝消息管理功能時,要考慮一定的復用性和流程的可視化呈現(xiàn);
消息的本質(zhì)是信息的觸達和傳遞,但是過多的消息通知也容易讓用戶產(chǎn)生厭倦心態(tài),所以消息內(nèi)容的簡潔明確,推送的間隔時段以及閱讀提醒,在產(chǎn)品具體的實現(xiàn)上需要極為用心,從而讓消息在業(yè)務體系中發(fā)揮更大的價值。
審核編輯:劉清
-
數(shù)據(jù)緩存機制
+關注
關注
0文章
2瀏覽量
1057
原文標題:聊聊消息中心的設計與實現(xiàn)邏輯
文章出處:【微信號:OSC開源社區(qū),微信公眾號:OSC開源社區(qū)】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
【經(jīng)驗分享】PET符合電路邏輯實現(xiàn)問題
邏輯電路的計算方法
聊聊存儲器的相關知識
數(shù)字系統(tǒng)的基本算法與邏輯電路實現(xiàn)
基于PLD芯片的時序邏輯設計與實現(xiàn)
邏輯設計中M圖的硬件電路實現(xiàn)方法
實現(xiàn)拆分大組合邏輯的方法
3相3級逆變器實現(xiàn)中心對齊SVPWM的方法

聊聊消息中心的設計與實現(xiàn)邏輯方法
評論