>>分享流行的Java框架以及开源软件,对孙卫琴的《精通Spring:Java Web开发技术详解》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 19722 个阅读者 刷新本主题
 * 贴子主题:  中央厨房订单管理系统,引入ActiveMQ消息队列,平滑处理高峰订单 回复文章 点赞(0)  收藏  
作者:mary    发表时间:2020-03-31 20:19:19     消息  查看  搜索  好友  邮件  复制  引用

    中央厨房订单大部分集中在高峰时段,所以设计时重点考虑的问题,是如何平滑处理瞬间的高负载,避免由于高并发量而引起任务堵塞,严重时导致系统雪崩。

     点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小

  一,   拓扑图

   订单管理系统从客户端或者第三方平台接收订单,处理完成后通知配送员取餐,将订单数据和状态信息显示在后台管理页面中。

点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小

  二,   系统架构

  1,   集成ActiveMQ消息队列,平滑瞬间高负载

   高峰期时,为了及时处理批量到达的订单,系统架构中引入ActiveMQ消息队列,  异步处理订单数据,将瞬间高负载平滑,保障运行稳定,架构易扩展。

   订单管理服务将收到的订单存到一个池子中,客户端和第三方平台不用阻塞等待处理结果,这样也不占用服务器资源。系统从消息队列中逐个取出订单,处理结束后通知配送员取餐。

               2,   集成Redis缓存系统,提高订单数据读写效率,并支持故障恢复

   订单数据保存到Redis缓存中,和使用内存相比有两个优点:

  1)  在架构上支持集群扩展,多个服务器节点时,处理业务逻辑读写数据时,通过Redis系统保持一致。

  2)  在服务重启或者发生故障时,可以恢复当前处理的订单数据。

               3,   集成WebSocket,实时更新订单数据到后台管理页面,又不增加服务器负载

   订单管理系统处理订单,如何更新显示到后台管理页面中?有两个方案可选。

  1)  定时调用接口,为了及时显示订单状态,定时任务执行频率会设置的比较高。这样就带来两个问题,首先是增加服务器负载,其次是在没有新订单数据时,仍然需要频繁的调用接口。

  2) WebSocket推送数据,订单处理服务在收到订单或者订单状态发生变化时,推送数据到后台管理页面,不仅做到了信息实时显示,而且占用服务器资源非常少,在多个管理后台打开页面时,不额外增加服务器负载。

               4,   系统架构 ?

点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小

  三,   产品原型开发

  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时非常简单,配置服务器信息后,封装发送和接口功能,易于开发维护。

点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小

  2,Spring Boot集成Redis

  Redis是一个高性能的key-value数据库,相比MySQL以及其他关系型数据库,Redis读写效率更高,常用于搭建缓存系统,提高并发响应速度  。

  点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小?

       3,Spring Boot集成WebSocket

  WebSocket是建立在TCP协议上的全双工通信连接,不同于HTTP只能有客户端发送请求消息,在客户端和后台服务建立WebSocket连接后,双方都可以主动推送消息,占用很少的资源,实现消息实时同步。

点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小

    

----------------------------
原文链接:https://blog.51cto.com/13851865/2483010

程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2020-04-08 09:15:36 重新编辑]
  Java面向对象编程-->Java常用类(上)
  JavaWeb开发-->Web运作原理(Ⅰ)
  JSP与Hibernate开发-->映射组成关系
  Java网络编程-->客户端协议处理框架
  精通Spring-->Vue组件开发高级技术
  Vue3开发-->组合(Composition)API
  10分钟认识RocketMQ!想进阿里连这个都不会?
  MessagePack反序列化使用示例
  使用Spring MVC多次读取请求Request Body的内容
  微服务的拆分方式
  @Configuration注解的用法
  【项目实践】使用Vue.js和ElementUI快速实现后台管理系统的界...
  SSM三大框架整合详细教程
  回字有四种写法,那你知道单例有五种写法吗
  微服务架构的基础框架选择:Spring Cloud还是Dubbo?
  SpringCloud Gateway-整体流程
  Zabbix后端存储ES的优化实践
  使用idea和gradle编译spring5源码
  nginx详解反向代理、负载均衡、LNMP架构上线动态网站
  什么是CXF
  一篇文章概括Spring Cloud微服务教程
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。