一、便利店商品数据管理系统
系统描述:
用户登录后进入到便利店数据管理系统页面,实现对于相关基础信息(区域、门店、支付方式等)、商品基本信息(如商品基础信息、商品区域扩展以及商品条码维护等)、相关报表(实时库存查询报表、福袋商品明细查询报表以及数据异常查询报表等)、相关合同(如年度购销合同、房屋租赁合同以及加盟合同等)以及对于商品属性的扩展与管理。
开发框架: 后端:Spring Cloud + Mybatis + MySQL + Redis
前端:Vue + ElementUI
我的工作:
(1)对于商品门店扩充、福袋导入、合同管理等功能的需求文档编写
(2)对于商品门店扩充、福袋导入、合同管理等功能的页面设计与后端功能开发与后期性能优化
技术亮点:
(1)对于读多写少的查询数据(如系统目录)存储于Redis中,以提升数据读取效率;同时对于Redis作水平扩展为主从集群,保证了系统的高可用性
(2)针对十几万量级的商品信息查询效率低下问题,业务上,对于访问商品高频字段与其他字段作隔离;技术上,使用explain执行计划对商品信息查询语句进行索引优化。通过业务优化与技术优化相结合的方式提升了查询效率
(3)针对合同管理开发中具体合同中存在大量可重复的逻辑处理流程使得开发效率低下的问题,将合同处理逻辑封装为模板模式,提升了代码复用性与简化逻辑复杂性,提升了开发效率
(4)使用SpringBoot Starter封装独立于业务的的包括如用户登录、订单号生成器、报表导出等在内的诸多公有功能,实现开箱即用,提升了开发效率
(5)针对各门店在同一时间订购热门商品偶尔出现的超卖问题,使用Redis + MySQL行锁保证了商品库存数量的最终一致性与系统处理效率
(6)针对供应商变更单等定时任务存在的较为复杂的业务逻辑,将其部署于一个分布式任务调度平台XXL-JOB中运行,降低了业务复杂度同时亦提升了任务处理效率
二、分布式电商特价商品抢购系统
系统描述:
用户登录后进入特价商品抢购页面,可浏览所有参与限时特价活动的商品,通过点击商品详情页下单按钮,可实现对于商品的限时抢购并下单。
后端框架:Spring Boot + Mybatis + Redis + RocketMQ
前端框架:Vue + ElementUI
数据库:MySQL
测试环境:云主机*4 、2核8GB
技术亮点:
(1)针对特价商品抢购活动特质,前端采用“按钮间隔失效法”只允许少数流量进入后端,减少后端压力;
(2)针对抢购活动开始瞬间的高流量峰值,设置下游拥塞窗口大小并结合线程池,有效应对浪涌流量的冲击;
(3)使用Nginx实现负载均衡使瞬间大流量均衡流向各后端服务器,解决了单台服务器负载太高宕机的问题;
(4)针对单个用户可能产生的重复抢购问题,在userId与goodId字段联合字段加唯一索引,保证单个用户只能成功抢购一件特价商品;
(5)针对网络用户可能存在的使用多账号同一时间发送多个请求的问题,通过滑动验证码较大程度上解决了特价商品抢购作弊问题以及当流量压力剧增时可做为服务降级的策略;
(6)对于Redis缓存中商品列表数据的过期时间加随机值,解决缓存采用相同过期时间导致缓存在某一时刻同时失效导致缓存雪崩问题;
(7)对静态资源(JS、CSS、图片、HTML)请求路由到对应的CDN,TPS提升至原先2.14倍;
(8)用户与商品信息置于Redis中,下订单处理TPS提升至原先的1.8倍;
(9)针对Redis与数据库库存扣减可能存在的数据一致性问题,使用RocketMQ的事务型消息机制,完成DB中库存同步扣减操作,实现数据最终一致性;