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

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

image.png

一,拓撲圖緩存

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

image.png

二,系統架構架構

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

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

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


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

訂單數據保存到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

相關文章
相關標籤/搜索