概况:2014年微信红包使用数据库硬抗整个流量,2015年使用cache抗流量
- 什么时候算微信金额
- 抢到红包,点开发现没有?
- 红包的金额怎么算?为什么各红包的金额相差很大?
- 红包的设计
- 红包如何计算被抢完?
- 如何保存8w每秒的写入
- 扩容量多少?
- 查询红包分配,压力大不?
- 一个红包一个队列?
- 如何从数据上证明每个红包的概率是不是均等的?
- 拍脑袋算法,会不会出现两个最佳?
- 每领一个红包就更新数据么?
- 红包如何入库入账?
- 入账出错怎么办?比如红包个数没了,金额还有?
-
秒杀系统应该考虑什么问题?
-
超卖问题
假如库存只有100,超卖了200。
-
高并发
秒杀时间短,并发量大,秒杀持续时间只有几分钟,后端如何防止并发过高造成缓存击穿或失效,击垮数据库等?
-
接口防刷
针对秒杀软件(模拟不断向后台服务器发起请求),如何防止这类软件的重复无效请求?防止不断发起的请求?
-
秒杀URL
在未到规定时间,秒杀的按钮是灰色的,一旦到达规定时间,灰色按钮变为可点击状态。一般可以通过F12看到浏览器的network找到秒杀的URL,可以通过特定的软件请求URL实现秒杀,如何防止?
-
数据库设计
秒杀有击垮服务器的风险,如果和其他业务的数据库耦合在一起,就很可能牵连和影响其他的业务。如何防止秒杀发生宕机、服务器卡死的问题,尽量不影响线上正常运行的业务。
-
-
设计方案?
- 数据库设计
- 秒杀URL设计
- 页面静态化设计
- 单体redis升级为集群redis
- 使用Nginx
- 精简SQL
- redis预减库存
- 接口限流
- 异步下单
- 服务降级