如今的互联网已经在海量服务领域有了很成熟的理论,因此自己也很庆幸,能够从 0 到 1 完整践行海量服务。微视春节项目中的集卡瓜分活动,是一个典型的秒杀场景,自己参与其中,分享一些心得和总结。
秒杀系统的难点
友好的用户体验
用户不能接受破窗的体验,例如:系统超时、系统错误的提示,或者直接 404 页面
瞬时高并发流量的挑战
木桶短板理论,整个系统的瓶颈往往都在 DB,如何设计出高并发、高可用系统?
如何设计
架构图
时延很重要,需要全链路分析。不但可以提高吞吐量,而且可以快速暴露系统的瓶颈。
峰值时刻,补单逻辑需要关闭,避免加剧雪崩。
我们的降级预案大概如下:
一级预案,瓜分时刻前后 5 分钟自动进入:
入口处 1 分钟内陆续放开入口倒计时,未登录用户不弹入口
主会场排队,进入主会场以 100wqps 为例,超过了进入排队,由接入层频控控制
拉取资格接口排队,拉取资格接口 100wqps,超过了进入排队,由接入层频控控制
抢红包排队,抢红包 100wqps,超过了进入排队,由接入层频控控制
红包到账排队,如果资格扣除成功,现金发放失败,进入排队,24 小时内到账。异步补单
入口处调用后端非关键 rpc:ParticipateStatus,手动关闭
异步补单逻辑关闭。
二级预案,后端随机丢请求,接入层频控失效或者下游服务过载,手动开启进入
三级预案,前端随机丢请求,后端服务过载或者宕机进入。手动开启
综上,整个瓜分时刻体验如下所示:
回顾下漏斗模型,总结下整个实践:
还没有评论,来说两句吧...