搭建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



