餐饮管理系统
开发架构: nginx+gateway+springboot+springcloud+redisson+rabbitmq
工作职责:负责业务的开发和一些业务功能优化(三级菜单优化和商品详情页优化) 遇到困难:1.高并发下缓存失效问题(缓存穿透,缓存雪崩,缓存击穿,)2.redis和mysql数据一致性问题 3.订单如何防止重复提交4.Feign远程调用丢失请求头问题 5.库存和订单的最终一致性 6.关闭订单和库存解锁的幂等 问题 7.支付完成后的回调问题和收单问题
抢购系统
需求背景:在规定时间内,一定数量的用户对一定数量的商品进行抢购,直到商品被抢完为止
开发架构:redisson+springboot+rabbitmq+mybatis 部署方式:通过jenkins+docker实现自动化容器部署
项目管理工具: gitlab
压测工具:jmeter
项目亮点:1.项目独立部署,独立秒杀模块
2.使用定时任务每天三点上架最新秒杀商品,削减高峰期压力 3.秒杀链接加密,为秒杀商品添加唯一商品随机码,在开始秒杀时才暴露接口 4.库存预热,先从数据库中扣除一部分库存以`redisson 信号量`的形式存储在redis中 5.队列削峰,秒杀成功后立即返回,然后以发送消息的形式创建订单
遇到困难:1.如何防止重复下单 2.如何隐藏访问路径 3.如何防止库存超卖和数据的最终一致性 4.库存扣完,如何降低redis的访问 5.如何使用jmeter同时登陆5000个用户进行秒杀 6.上架秒杀商品的幂等性问题
迁移美团云
需求背景:为了将商家数据从阿里云迁移到美团云,开发一个域名切换系统。 业务流程:域名迁移系统下发域名切换消息,pos收到通知后,先进行写库操作,会对当前的域名信息以及pos本地环境进 行一系列检查,若检查通过,则会将pos本地的域名更新为最新的域名,并且上报迁移中心,域名切换成功,否则,则会将库 里的域名回滚,并上报迁移失败。
遇到困难: 1.域名切换过程中断电怎么办?2.网络断开无法上报迁移结果怎么办?3.域名切换成功后,登陆仍然保持原有会话信息,无法使用新域名建立新的会话怎么办?需要考虑消息幂等性,最终一致性问题 ,接口幂等性问题。
cat报警日志上报系统
需求背景:随着公司业务发展,支撑公司业务的各种系统越来越多,为了保证公司的业务正常发展,急需要对这些线上 系统的运行进行监控,做到问题的及时发现和处理,最大程度减少对业务的影响。
业务流程:该模块主要是基于生产者与消费者模式,在各个业务模块中进行埋点,通过商家触发埋点操作,将报警日志 添加到日志收集器里,日志扫描线程通过扫描收集器里的日志,根据相应的策略将一定数量的日志进行数据压缩,然后 添加到任务上传队列中,任务上传线程通过监听任务队列,将队列的任务进行数据上传,从而达到日志上报的作用。
遇到困难:1.多个线程间的相互协作以及线程安全问题的处理。
2.在网络出问题等情况,避免日志数量无限增加。