電商後台設計:系統消息

電商後台系統中,消息系統是一個必不可少的功能模塊,其核心是幫助後台人員及時瞭解業務消息,保障業務正常運行。本文作者以此為出發點,詳細的概述了電商後台中的系統消息的設計思路,與大家分享。

電商後台設計:系統消息

後台系統是一個龐大的功能體系,及時的瞭解每個功能的使用狀況,保障業務正常進行是每個系統的重點。通常系統內會開發大量的監控功能(可視化的報表和非可視化的報表)來對這些業務進行監控,同時通知相應的負責人以及時瞭解業務和服務器狀況。

常見的一些監控功能,如賬號異常(賬號異地登錄、賬號多次密碼輸入錯誤)、運營通知(活動上架、活動下架)、訂單異常(訂單堆積、派單堆積)、服務器異常(服務器宕機、CPU過載)、腳本異常(腳本卡死、進程過多)等等。

今天帶大家來設計一個系統消息通知模塊,通過簡單的設置,完成個性化的消息發送,並且減輕後期代碼的維護工作。首先我們來看看常見消息發送功能是如何實現的以及它們的優缺點。

01 實現方式1.1 直接觸發

直接觸發是將消息發送的邏輯和具體的業務代碼邏輯寫在一起,當滿足條件時,觸發消息發送功能。

  • 優點:開發簡單,如果功能封裝好後,代碼粘過來,十分鐘功能基本就能完成;消息發送比較及時,消息發送邏輯和業務邏輯在一起,滿足條件就會立即觸發。
  • 缺點:後期如果需要添加、編輯或刪除接收人信息,就需要修改代碼,維護起來比較麻煩。熟悉代碼的人可能幾分鐘就搞定了,新人估計就得看半天代碼了。

我參與過多個系統的開發,發現這麼幹的人還是挺多的。總結一下應該有以下幾個原因:

  1. 寫起來簡單,因為發送邏輯一般都是封裝好的,只需要粘代碼,修改一下發送參數就完事
  2. 一般後台業務系統比較多,使用的編程語言比較多,各語言之間相互調用需要配置基礎服務,成本太大
  3. 消息通知通常屬於系統基礎功能,產品經理基本上不會去關注,也就不會去統一規劃這個功能,技術就自己隨意發揮了^_^
1.2 消息池

通過將所有消息先收集到一個消息池(如Mysql、Redis、Kafka等)中,然後再統一通過系統調度將消息發送給接收人。

  • 優點:功能模塊化,可以做到統一管理,代碼的調用可以更簡潔,後期維護成本可以降到最低。
  • 缺點:消息會有延遲,消息池它是一個異步發送方式,消息的生產和發送是兩個相互獨立的過程;需要開發配置內容頁面,開發量稍微大一點,但是後期能減輕更多的維護成本,我認為是非常值得的。
02 消息池模型

系統規劃的目的就是讓功能結構清晰,後期維護更輕鬆,所以上面第一種的實現方式就不講了,主要討論一下消息池功能是如何實現的。先來看一下消息池功能的模型圖:

電商後台設計:系統消息

上面的模型主要分四層:

  • 消息來源: 消息來源從開發角度來説,也稱為消息生產者,它主要是指消息的生成方式和位置。在龐大的後台系統中,技術架構會劃分出多個業務模塊,各自的的業務模塊都由不同的開發人員維護,不同的業務組使用的語言也各不相同,所以在完成相同功能時,書寫方式也是各不相同,這個是沒有辦法統一的。
  • 消息池: 主要作用是存儲要發送內容信息,如消息內容,發送時間等。市面上常見的軟件有Mysql、Redis、Kafka、RabbitMQ等。所以對消息數據的存儲我們是可以做到統一的。
  • 消息分發:主要作用是獲取待發送的消息列表,並根據已設置的接收人信息,找到具體的接收人併發送消息。技術上通常會啓動相應的任務程序持續的監控消息池,當消息池中有需要發送的數據,就執行相應業務邏輯。
  • 接收人: 具體的消息接收人,接收人的接收方式有手機、郵箱或站內信。
03 功能分析

設計具體功能前先來分析一下消息通知都涉及哪些功能。

3.1 消息類型

在系統運行過程中,會涉及到許多業務功能的監控,如訂單業務中,訂單支付是否有未成功、訂單分配是否有堆積的情況、派單功能是有堆積情況;再如運營業務中,商品運營活動已經設置上線時間,到點上線後需要及時通知運營人員上線是否成功,避免影響活動效果。

為了能夠及時讓維護人員瞭解問題,通常都對消息進行歸類,如賬號異常、服務器警告、數據庫異常、運營通知、訂單異常、腳本異常等。

3.2 緊急程度

系統中對於不同類型的消息,根據重要程度會劃分出不同的級別。如系統每日報表任務,由於數據量比較大,要求並不是很高,延遲一天通常都可以接受, 所以都是晚上3 ~ 5點之間由腳本自動運行導出後放在服務器上,第二天早上8點發系統通知,再由需求人自行導出就可以了,這類消息屬於一般程度;

但是對於服務器宕機這種情況,就必須立即通知負責人進行處理,以免給企業帶來更多的損失,這類消息屬於緊急程度。

3.3 接收方式

消息接收方式通常就三種:站內信、手機短信、郵箱。不同的接收方式作用有所不同:

  • 站內信:站內信是系統內部功能,研發人員可以隨意設置,消息內容可以寫的比較詳細;但是時效性比較差,取決於接收人什麼時候登陸系統。
  • 郵箱:消息內容可以寫的比較詳細,時效性也比較差,但是郵件確實必發的功能,因為可以作為盡職調查的憑證。
  • 手機短信:短信功能一般都由第三放平台提供,所以發送內容長度有所限制,內容需要簡潔,最大特點就是及時。
3.4 發送時間

對於系統中的消息,比較緊急的如訂單支付異常、數據庫宕機異常它們需要及時發送,還有一些不重要的,比如上面説的各種任務報表,晚上3、4點生成好後,系統也不會發送消息,一般會設置好時間,等到早上8、9點才會開始發送通知,還有一些任務需要每個幾小時就得發送一次。

3.5 唯一標示

唯一標示主要用於代碼開發。在測試環境和正式生產環境由於測試導致數據庫ID不一致,所以開發時沒有辦法通過對應的ID調用消息,就需要設計一個唯一標識符供開發人員使用,一般標示符命名根據具體的業務點來命名。

3.6 消息接收人

由於員工崗位的變動,後台需要設置相應的接收人維護界面,可以自由的添加、刪除多個消息接收人。

04 原型設計

系統消息基本就上面這些功能,有需要的可以自己再擴展。下面給出部分原型設計圖:

功能整理:

電商後台設計:系統消息

消息設置列表:

電商後台設計:系統消息

消息表單設置頁:

電商後台設計:系統消息

接收人列表:

電商後台設計:系統消息
05 使用方法

功能我們設計好了,如何在業務中使用,我簡單説一下:

  1. 需要各業務平台封裝消息池調用功能,並開放一個接口,用來創建具體消息內容
  2. 在需要發送消息的業務裏,調用上面的消息創建接口
  3. 消息模塊啓動任務(如crontab、監聽)監控消息池,如果有待發送消息,獲取並組織消息內容,完成消息發送。

其中1、2兩步需要在各自業務平台完成,第1步封裝成公共功能,只用開發一次,第2步根據業務需要自行調用,就一行代碼,是不是很簡潔。剩餘所有的功能都集中在消息模塊,維護起來就比較方便了。

以上就是系統消息模塊的設計,歡迎下方留言交流!

作者:JackLiu;個人微信公眾號: 揚帆去遠航(ID:Jackai_liu)

本文由 @Jack 原創發佈於人人都是產品經理,未經作者許可,禁止轉載。

題圖來自Unsplash,基於CC0協議。

版權聲明:本文源自 網絡, 於,由 楠木軒 整理發佈,共 2765 字。

轉載請註明: 電商後台設計:系統消息 - 楠木軒