基本信息

案例ID:230433

技术顾问:Shmily - 3年经验 - 广州市融易技术有限公司

联系沟通

微信扫码,建群沟通

项目名称:商品秒杀功能

所属行业:电子商务 - B2C

->查看更多案例

案例介绍

项目介绍:
秒杀系统其实是针对商品库存做的系统。用户成功秒杀商品,对于系统的操作就是减库存和记录下单明细。技术栈:
前端:Thymeleaf 、Bootstrap、Jquery
后端:SpringBoot 、MybatisPlus 、mysql中间件:RabbitMq 、Redis
压测工具:Jmeter功能模块:
1.超买解决:
(1)下单成功时把用户 id +商品 id 作为 key 存进 redis ,再次购买时校验 key 是否存在,实现一个用户只能购买一次同一商品,从而实现减少数据库的访问量 。
(2)在数据库的秒杀订单表为 userId 、goodsId 添加联合索引解决超买
2.超卖解决:
减库存时,在 sql 语句条件后添加库存大于0,原子性操作解决超卖问题
3.接口优化: (1)页面优化:
页面缓存:每次都是请求 thymeleaf 渲染可以用缓存 ,存进整个页面 从 redis 中取页面设置超时时间60秒
(2)服务优化:
下单之后采用 RabbitMQ 进行异步插入用户收货地址信息,提升响应速度
(3)安全优化:
隐藏秒杀地址:点击秒杀按钮会请求到后端,随后产生随机 path 并以 key为 seckill+userId+goodsId 存入 redis ,页面请求成功会发送请求到真实秒杀地址,并且通过获取到的 value 校验 path 是否正确
接口防刷:秒杀前需要图形验证码 ,用户输入的结果有快有慢 ,可以以一定的减少数据库的访问量
接口限流:基于 redis的 string 数据结构实现接口限流 ,控制每个用户每1s内只能请求1次接口 ,缓解服务器压力

相似案例推荐

其他人才的相似案例推荐

发布任务

企业点击发布任务,工程师会在任务下报名,招聘专员也会在1小时内与您联系,1小时内精准确定人才

微信接收人才推送

关注猿急送微信平台,接收实时人才推送

接收人才推送
联系需求方端客服
联系需求方端客服