最近听到秒杀的话题,想起n年前去过一次面试,好像有设计问题,觉得很有趣,整理了一下,大家都可以用来临时应急!
秒杀场景:
10W真实用户参与秒杀,只有100人成功购买商品。
考虑到循环农户的特殊手段,接口流量按20W计算吧。
想法如下。
1、前端控制
技术控制、灰色按钮配置、防止重复提交
2、后端负载均衡、流量均衡
单体理论极限同时约6W、20W流量需要4台服务,分散流量
3、用户频率限制
用户不断打磨商品,在一定时间内,同一用户多次提出请求,可以通过redis过滤
4、令牌政策
可以通过令牌桶或MQ过滤数据,得到令牌的人可以购买,减轻数据库压力
5、数据库乐观锁定
只有满足条件的才能成功购买商品