秒杀系统设计
场景
10万人抢100台手机
问题
1) 高并发 2) 读多写少 3) 防止超卖 4) 恶意请求 5) 瓶颈在数据库
解决
1) 服务单一职责
把秒杀服务和对应的数据库单独部署,万一崩了也不影响其他服务
2) redis集群
3) Nginx负载均衡
4) 资源静态化 nginx的gzip,etag,cdn
5) 按钮控制
6) 限流
前端限流:点击一下然后几秒之后才可以继续点击。
后端限流:istio或hystrix或redis滑动窗口和令牌桶
7) 缓存预热
提前把商品的库存加载到Redis中,使用lua脚本做redis事务
8) 限流&降级&熔断&隔离
9) 削峰填谷
订单放到消息队列,一点点消费去改库存
Newest Posts