【解決方案】Java 網際網路專案中訊息通知系統的設計與實現(上)

CodeBlogMan發表於2024-06-19

目錄
  • 前言
  • 一、需求分析
    • 1.1傳送通知
    • 1.2撤回通知
    • 1.3通知訊息數
    • 1.4通知訊息列表
  • 二、資料模型設計
    • 2.1概念模型
    • 2.2邏輯模型
  • 三、關鍵流程設計
  • 本篇小結

前言

訊息通知系統(notification-system)作為一個獨立的微服務,完整地負責了 App 端內所有訊息通知相關的後端功能實現。該系統既需要與文章系統、訂單系統、會員系統等相關聯,也需要和其它業務系統相關聯,是一個偏底層的通用服務系統。

App 端內的訊息通知型別常見有這幾項:評論通知、點贊通知、收藏通知、訂單通知、活動通知、個人中心相關通知等。該系統在可擴充性、高效能、較高可用性、資料一致性等方面有較高要求,最終目的是提升使用者粘性、加強 App 與使用者的互動、支撐核心業務的發展。

文章的(上)篇將從需求分析、資料模型設計、關鍵流程設計這 3 部分來說明,(下)篇將從技術選型、後端介面設計、關鍵邏輯實現這 3 部分來進行說明。


一、需求分析

主要從傳送通知、撤回通知、通知訊息數、通知訊息列表這 4 個子需求來展開。

1.1傳送通知

  • 該操作一般由業務系統發出通知,業務系統包括了 App 端和管理後臺這兩種;

  • App 內的發起的通知一般由 App 使用者即會員(member)自己來操作,如:在評論區回覆評論,則其父評論的釋出者需要收到評論回覆通知;

  • 管理後臺發出的通知一般是管理員將某種型別(文字or圖片等)的訊息傳送至 App 使用者,如:某個活動的運營者在後臺給 App 使用者傳送獲獎通知。

1.2撤回通知

  • 這是一個可選操作,一般也是由業務系統來操作,具體會由管理後臺來完成,在 App 端一般較少有此類操作;

  • 管理後臺可以針對已經傳送成功的通知進行單條撤回或者批次撤回,App 使用者的通知列表和未讀訊息數將會隨之變化。

1.3通知訊息數

  • 在App ”我的“模組,新增訊息通知 icon,建議命名為”通知“;

  • 當有新通知時顯示 x 條新訊息(紅色數字),顯示數字為該使用者所有未讀新訊息數之和;

  • 有新增一條未讀訊息時數量+1,撤回一條未讀訊息數量-1;

  • 未讀訊息數需要與訊息通知列表的未讀訊息數一致。

1.4通知訊息列表

  • 點選 “通知” icon後進入訊息通知列表,根據通知型別分為不同的 tab 頁;

  • 列表展示該使用者收到的所有訊息通知,並按通知時間倒序展示;

  • 新訊息用紅點標識,檢視後退出的狀態標記為已讀,即紅點會消失;

  • 點選具體的訊息,如果是連結,則支援跳轉到對應地址;如果是圖文,則支援檢視;如果是文章,則支援跳轉檢視。


二、資料模型設計

該系統的資料模型分為兩部分:資料庫與快取。其中對資料庫的概念模型(E-R圖)和邏輯模型(表設計)進行展開,對快取的資料結構在關鍵邏輯實現章節會進一步說明。

2.1概念模型

該系統目前設計為3張表,命名為:notification(通知記錄表)、notification_config(通知配置表)、external_sys(外部系統表)。

概念模型使用 E-R 圖來表示,其中 notification 與 notification_config 為1對多的關係,且下面為了便於描述,只給出關鍵欄位,其它欄位可以作為冗餘。

【解決方案】Java 網際網路專案中訊息通知系統的設計與實現(上)
E-R圖 1

external_sys 為單獨記錄外部業務系統的資訊,用於業務系統呼叫通知系統介面時的身份校驗:

【解決方案】Java 網際網路專案中訊息通知系統的設計與實現(上)
E-R圖 2

2.2邏輯模型

下面只給出關鍵欄位的表設計,其它欄位可以作為冗餘:

notification 表設計
【解決方案】Java 網際網路專案中訊息通知系統的設計與實現(上)
notification_cofig 表設計
【解決方案】Java 網際網路專案中訊息通知系統的設計與實現(上)
external_sys 表設計
【解決方案】Java 網際網路專案中訊息通知系統的設計與實現(上)

三、關鍵流程設計

下面是業務簡單拆分後的泳道圖,基於此圖再做關鍵流程的設計。

【解決方案】Java 網際網路專案中訊息通知系統的設計與實現(上)
業務流程泳道圖

下面透過一個簡單的時序圖(不含撤回)來進行關鍵流程的拆解:

【解決方案】Java 網際網路專案中訊息通知系統的設計與實現(上)
業務流程時序圖

本篇小結

到這裡Java 網際網路專案中訊息通知系統的設計與實現(上)篇就暫告一段落了,剩下的部分包括技術選型、介面設計、關鍵邏輯設計會在下篇來進行說明。

系統設計的文章都是透過大量的實踐與驗證,最後才能下筆成文分享給大家的。如果文章有不足和錯誤,還請大家指正。或者你有其它想說的,也歡迎大家在評論區裡交流!

相關文章