精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

聊聊消息中心的設計與實現

jf_ro2CN3Fa ? 來源:知了一笑 ? 2023-05-29 15:03 ? 次閱讀

一、業務背景

微服務的架構體系中,會存在很多基礎服務,提供一些大部分服務都可能需要的能力,比如文件管理、MQ隊列、緩存機制、消息中心等等,這些服務需要提供各種可以復用的方法或者接口,以便其他業務服務可以快速調用;下面來看看消息通知的原理:

154edea0-fdee-11ed-90ce-dac502259ad0.png

這里的消息不同于MQ隊列,是指業務側的通知機制,例如短信、郵件、系統消息等,在業務層面的需求很多,通常會封裝單獨的消息中心提供通知機制;

從流程上面看,消息通知是典型的生產-消費模式,業務側不斷的生產消息,消息中心在接收之后進行消費,把通知推送到相應的渠道中,很顯然這種邏輯具備很高的復用性。

二、消息通知

1、流程管理

消息通知的流程設計,在各個業務線中通過消息中心提供的接口方法,將不同場景下的消息內容提交到消息中心,消息中心進行統一維護管理,并根據消息的來源和去向,適配相應的推送邏輯:

1553bb00-fdee-11ed-90ce-dac502259ad0.png

消息生產:涉及到的場景很多,比如活動、營銷機制、系統通知、業務流轉、過期提醒等;

消息管理:對預發送消息的結構和參數進行校驗,并創建消息推送的任務,維護任務級別的推送管理,跟蹤消息的狀態周期;

消息消費:基于消息任務的結構,構建消息推送的主體內容,并對接多個發送渠道,實現通知的高效觸達;

定時任務:消息可以直接即時推送,但如果是夜間定時任務觸發,則要考慮推送延遲問題,將消息放在指定時段投遞;

渠道對接:通常不同的渠道意味著不同的場景,例如監控推送釘釘,活動一般推送微信,賬戶變動發郵件,營銷走短信,業務則應用內通知;

在整個流程中涉及到的模塊比較多,狀態的流轉也很復雜,但是通過消息中心進行統一標準管理和流入流出的跟蹤,也可以提供清晰的生命周期監控和維護;

2、流程時序

在整個消息通知鏈路中,在不同的流轉節點中,無不涉及狀態的變化(即from.to狀態),這樣可以構成整個生命周期的視圖:

155b4910-fdee-11ed-90ce-dac502259ad0.png

初始化:業務方構建簡單的消息結構,請求發送到消息中心后,初始化一個消息任務;

任務化:對消息發送請求進行校驗,并將消息轉換成一個標準的推送任務結構;

推送中:根據任務推送的時間周期類型,將任務構建成不同渠道的通知主體,從而進行渠道消息推送;

已完成:根據消息在渠道推送的狀態回調,更新消息中心的任務完成狀態,或者失敗重試;

大部分的消息通知機制都可以容忍一定的延遲性,所以消息中心完全可以解耦各個流程,引入MQ隊列或者異步機制,業務方只需要將請求發送到消息中心,之后由消息中心統一調度和管理即可;

3、結構設計

這里根據系統的實現過程和經驗,給出一個數據結構的設計參考,用來對業務場景做簡單的維度描述:

15623b6c-fdee-11ed-90ce-dac502259ad0.png

消息模板:定義通知的主體結構,基于消息的參數模型,構建推送的消息內容;

消息任務:消息中心管理和維護的主體結構,以任務的模式維護消息從生產到推送完成的整個狀態周期;

場景記錄:消息最終推送出去的內容和場景分類,也可以簡單的理解為不同渠道的投遞記錄;

交互消息:強調消息在接收方是否觸達并且對消息產生了交互行為,例如會話,郵件回復,狀態關聯等;

三、實踐總結

最后還是站在技術實現的角度,總結一下消息通知機制中的一些關鍵問題:

生產消費:消息生產之后寫入消息中心的存儲容器,之后進行消費流程的管理,是業務解耦的常用手段;

任務管理:以任務的模式進行消息推送的調度,通過任務狀態的變化和控制,實現生命周期的管理;

狀態機:描述消息的流轉節點和狀態,在不同的事件中觸發不同的狀態切換和轉移,并在狀態變化后銜接各種業務動作;

渠道對接:通常消息推送的渠道多是第三方平臺,所以在消息中心會接入諸多的渠道,例如微信、釘釘、短信等;

基礎封裝:作為分布式系統中的基礎功能,在封裝消息管理功能時,要考慮一定的復用性和流程的可視化呈現;

消息的本質是信息的觸達和傳遞,但是過多的消息通知也容易讓用戶產生厭倦心態,所以消息內容的簡潔明確,推送的間隔時段以及閱讀提醒,在產品具體的實現上需要極為用心,從而讓消息在業務體系中發揮更大的價值。





審核編輯:劉清

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

    關注

    38

    文章

    7455

    瀏覽量

    163619
  • 狀態機
    +關注

    關注

    2

    文章

    492

    瀏覽量

    27485

原文標題:聊聊 消息中心的設計與實現

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

收藏 人收藏

    評論

    相關推薦

    聊聊 220V交流 過零檢測

    聊聊過零檢測,以及如何實現過零檢測 ...... by 矜辰所致
    的頭像 發表于 06-06 11:20 ?4249次閱讀
    <b class='flag-5'>聊聊</b> 220V交流 過零檢測

    聊聊消息中心的設計與實現邏輯方法

    微服務的架構體系中,會存在很多基礎服務,提供一些大部分服務都可能需要的能力,比如文件管理、MQ隊列、緩存機制、消息中心等等,這些服務需要提供各種可以復用的方法或者接口,以便其他業務服務可以快速調用;
    的頭像 發表于 12-28 17:21 ?969次閱讀
    <b class='flag-5'>聊聊</b>消息<b class='flag-5'>中心</b>的設計與<b class='flag-5'>實現</b>邏輯方法

    高通產品的進來聊聊

    高通產品的進來聊聊,共享一下資源.
    發表于 01-03 14:32

    使用Azure軟件包連接IoT中心可以實現哪些功能

    使用Azure軟件包連接IoT中心可以實現什么功能?Azure IoT中心的架構圖及功能
    發表于 03-30 08:07

    聊聊計算機加法的電路原理和proteus仿真

    ”待實現。在本文中,我們主要來聊聊計算機加法的電路原理和proteus仿真,順便會搞定之前文章提到的“神秘電路”
    發表于 07-29 06:19

    聊聊stm32的入門學習路線

    絕大部分的stm32的學習者是在入門階段的,所以今天我們就來聊聊stm32的入門學習路線。先來看個圖,相信會有所了解。首先學習stm32 不管是C語言還是匯編肯定跑不了的所以C語言一樣要打好基礎...
    發表于 08-03 07:08

    聊聊CMSIS

    這次我們來聊聊CMSIS。之前在Kile環境下創建STM32工程的時候,對有些文件的加入總不是很了解,書上或網上建立工程的教程對于這些文件的加入也是一筆帶過,或者直接不說。對于類似名叫
    發表于 08-24 07:50

    聊聊對按鍵掃描軟件結構的理解

    按鍵掃描,我想應該是比較簡單的單片機應用了,但是有時候看起來簡單的東西反而不好寫。本文拿大部分人覺得簡單的按鍵掃描聊聊我工作至今對于軟件結構的理解。嗯,對的,是結構,不是架構,暫時不敢提架構這個詞
    發表于 12-02 06:27

    聊聊基于STM32F103的紅外循跡避障小車的Proteus仿真

    紅外循跡及紅外避障實現較簡單,無論是51單片機還是STM32單片機,其例程隨處可見。但是完全可以運行的Proteus仿真,開源的并不多,更不要說基于STM32單片機的仿真。下面跟大家聊聊基于STM32F103的紅外循跡避障小車的Proteus仿真。
    發表于 01-05 06:46

    聊聊復位電路

    時鐘電路我第一篇博客已經說講過了,今天我們來聊聊復位電路。當然,復位電路博大精深,并...
    發表于 01-17 07:50

    聊聊存儲器的相關知識

    虛擬地址物理地址等眾多地址及MMU相關知識先聊聊存儲器STM32單片機存儲器關于編譯器生成的文件數據在存儲器上的存儲結構物理地址、虛擬地址、線性地址和邏輯地址物理地址虛擬地址邏輯地址線性地址這些地址
    發表于 02-11 07:51

    聊聊字符串

    大家好,我是驚覺,今天聊聊字符串。字符串的使用場景非常之多,人機交互和雙機通信都會用到。比如:通過串口向單片機發送指令,以執行操作或配置參數。單片機讀取傳感器數據,數據格式是字符串。一般GPS數據
    發表于 02-28 06:52

    聊聊java泛型實現的原理與好處

    取得自己泛型參數的Class類型,C++只能由編譯器推斷在不為人知的地方生成新的類,對于特定的模板參數你只能使用特化。在本文中我主要想聊聊泛型的實現原理和一些高級特性。 泛型基礎 泛型是對Java語言類型系統的一種擴展,有點類似于C++的模板,可以把類型
    發表于 09-27 16:50 ?0次下載

    聊聊Redis的使用案例

    今天我們來聊聊 Redis 的使用案例。
    的頭像 發表于 12-13 14:13 ?489次閱讀

    聊聊嵌入式軟件分層

    今天以控制LED閃爍為例,聊聊嵌入式軟件分層
    的頭像 發表于 12-28 09:22 ?637次閱讀