中央廚房訂單管理系統,引入ActiveMQ消息隊列,平滑處理高峯訂單

中央廚房訂單大部分集中在高峯時段,所以設計時重點考慮的問題,是如何平滑處理瞬間的高負載,避免由於高併發量而引起任務堵塞,嚴重時導致系統雪崩。

image.png

一,拓撲圖

訂單管理系統從客戶端或者第三方平臺接收訂單,處理完成後通知配送員取餐,將訂單數據和狀態信息顯示在後臺管理頁面中。

image.png

二,系統架構

1,集成ActiveMQ消息隊列,平滑瞬間高負載

高峯期時,爲了及時處理批量到達的訂單,系統架構中引入ActiveMQ消息隊列,異步處理訂單數據,將瞬間高負載平滑,保障運行穩定,架構易擴展。

訂單管理服務將收到的訂單存到一個池子中,客戶端和第三方平臺不用阻塞等待處理結果,這樣也不佔用服務器資源。系統從消息隊列中逐個取出訂單,處理結束後通知配送員取餐。


2,集成Redis緩存系統,提高訂單數據讀寫效率,並支持故障恢復

訂單數據保存到Redis緩存中,和使用內存相比有兩個優點:

1)在架構上支持集羣擴展,多個服務器節點時,處理業務邏輯讀寫數據時,通過Redis系統保持一致。

2)在服務重啓或者發生故障時,可以恢復當前處理的訂單數據。


3,集成WebSocket,實時更新訂單數據到後臺管理頁面,又不增加服務器負載

訂單管理系統處理訂單,如何更新顯示到後臺管理頁面中?有兩個方案可選。

1)定時調用接口,爲了及時顯示訂單狀態,定時任務執行頻率會設置的比較高。這樣就帶來兩個問題,首先是增加服務器負載,其次是在沒有新訂單數據時,仍然需要頻繁的調用接口。

2)WebSocket推送數據,訂單處理服務在收到訂單或者訂單狀態發生變化時,推送數據到後臺管理頁面,不僅做到了信息實時顯示,而且佔用服務器資源非常少,在多個管理後臺打開頁面時,不額外增加服務器負載。


4,系統架構 

image.png

三,產品原型開發

Java是當前主流開發語言,Spring Boot是常用框架,有非常豐富的組件和易用的功能。

中央廚房訂單處理系統基於Java + Spring Boot + ActiveMQ + Redis開發接口服務,基於Ant Design Pro開發後臺管理系統,調用REST API和Web Socket服務。

歡迎學習Java軟件開發的同學,學習練手,完善功能,提交代碼。

1,開發更多的後臺管理系統客戶端,Android,iOS

2,完善後臺管理系統頁面:待處理訂單、超時訂單、待配送訂單

3,開發代客錄入訂單頁面

4,開發廚房管理員操作功能:停止接單、食材庫存,等等


四,功能組件集成

1,Spring Boot集成ActiveMQ

ActiveMQ是一個非常流行的消息隊列服務中間件,基於JMS(Java Message Service)規範,是一個純Java程序。Spring Boot集成ActiveMQ時非常簡單,配置服務器信息後,封裝發送和接口功能,易於開發維護。

image.png

2,Spring Boot集成Redis

Redis是一個高性能的key-value數據庫,相比MySQL以及其他關係型數據庫,Redis讀寫效率更高,常用於搭建緩存系統,提高併發響應速度

image.png 

3,Spring Boot集成WebSocket

WebSocket是建立在TCP協議上的全雙工通信連接,不同於HTTP只能有客戶端發送請求消息,在客戶端和後臺服務建立WebSocket連接後,雙方都可以主動推送消息,佔用很少的資源,實現消息實時同步。

image.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章