中央厨房订单管理系统,引入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

相关文章
相关标签/搜索