栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

秒杀系统设计方案

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

秒杀系统设计方案

搭建eureka集群,编写生产消费者,业务逻辑,熔断降级,git配置中心
前端:
静态页面,CDN抗衡峰值
灰色按钮,禁止重复提交
用户限流,ip限流

后端:
网关层控制脚本插件,限制访问频率
服务层
1.主要信息存到redis中
2.登录验证
3.flag开关
4.redis的decr预减库
5.redis的布隆过滤器防止重复秒杀
6.redis的Lua脚本完成redis的事务操作
6.发送秒杀成功到MQ给相应的业务端处理
7.用户id和商品id作为redis的key值,通过布隆过滤器来标识是否秒杀成功,减库

优化:
1.用户带上加密字符串来访问,合法
2.隐藏秒杀的接口,URL动态化,MD5加密算法做URL
3.控制接口的访问频率,拦截器+自定义注解
4.单独建立数据库,单一职责
5.redis集群,主从同步,读写分离,哨兵模式,开启持久化
6.熔断,降级,限流

数据库:
1.update数据库where库存>0,防止超卖
2.秒杀订单添加用户id和商品id联合的唯一索引

分析:
1.几十万的流量,单机redis的3-4万的QPS能抗住
2.缓存雪崩,缓存击穿,缓存穿透
3.每秒上万的QPS直接打到数据库,直接打挂数据库,熔断,降级,限流
4.tomcat能顶住几百的并发,Nginx几万不是梦,负载均衡,一台服务几百,租流量机
5.4个服务器都发现了还有1个,redis在2.6后Lua脚本类相当于redis的事务,完成redis的事务操作
6.判断和减库操作通过Lua脚本交给redis来完成,开关flag

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/573090.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号