场景

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) 削峰填谷

订单放到消息队列,一点点消费去改库存