之前帮一个做餐饮连锁的小老板做的点单和收银后台。当时他们店里的系统一到中午高峰就卡死,而且偶尔还会出现两个人同时点到最后一份菜的情况。这套系统主要是为了解决高并发下单不卡顿、以及通过缓存和原子操作防止订单超卖的问题
点击空白处退出提示
之前帮一个做餐饮连锁的小老板做的点单和收银后台。当时他们店里的系统一到中午高峰就卡死,而且偶尔还会出现两个人同时点到最后一份菜的情况。这套系统主要是为了解决高并发下单不卡顿、以及通过缓存和原子操作防止订单超卖的问题
前端基于Vue3 + Element Plus做了一套操作后台,店员用起来很方便。后端用Spring Boot写的,核心功能包括商品管理、订单处理、库存扣减、会员管理。为了解决并发问题,库存扣减用了Redis+Lua脚本保证原子性,配合RocketMQ做异步削单,这样高峰期订单不丢也不卡。
另外给客户交付时,除了代码,还写全了Swagger接口文档和Docker部署脚本,他们自己也能看明白
后端主要用 Spring Cloud Alibaba 那套拆的微服务,前端 Vue3。
最头疼的是高并发防超卖,一开始直接用 MySQL 扣库存,一压测直接锁死。后来改成了 Redis + Lua 脚本做原子扣减,再丢到 RocketMQ 里异步落库,硬生生把下单接口的 P95 压到了 200ms 以内,算是把性能这块啃下来了。
交付的时候,为了方便客户那边接手,代码里加了不少中文注释,接口全用 Swagger 生成了文档,最后还写了 Dockerfile 和一键部署脚本。项目上线跑了一段时间,基本上没再出现过卡顿和超卖的问题,算是顺利交差了。




评论