高并发系统-设计秒杀系统关注点
内容提要
秒杀体系是一个满足大并发、高功用和高可用的分布式体系。架构原则包括数据尽量少、恳求数越少越好、途径尽量短、恳求依赖越短越好、不要有单点。架构事例包括简化计划、支撑10w/s、超越100W/s。要害规划点包括动态别离、处理热门数据、流量削峰、进步体系功用、扣库存规划逻辑、兜底计划规划。
延伸解读
动态分离的权衡:ESI与CSI
动态分离是提升秒杀性能的关键,但实现方式需权衡。ESI在Web代理服务器上组装动态内容,用户拿到完整页面,体验好但增加服务端负担;CSI通过异步JavaScript请求动态内容,服务端性能更佳,但页面可能延迟,体验稍差。选择时需根据业务对体验和性能的侧重来决定。
热门数据:提前发现与隔离
热门数据可能只占请求的亿分之一,却消耗90%的服务器资源。静态热门可通过报名筛选和大数据预测提前识别;动态热门需构建异步发现体系,收集各环节热门Key并透传下游。处理时,缓存、约束和隔离是关键,如通过一致性Hash分桶、业务/系统/数据隔离,防止1%的请求影响99%的用户。
扣库存策略:一致性与性能的平衡
扣库存有三种方式:下单扣库存可能导致不付款,付款扣库存可能引发超卖或订单取消,预扣库存则需设置保存时间。秒杀场景下,库存读一致性要求不高,可将库存数据放入缓存提升读性能;扣库存操作可放入Redis异步写MySQL,并结合排队机制,避免高并发下资源占用过多。
兜底计划:降级、限流与拒绝服务
兜底计划是系统高可用的最后防线。降级在容量达到一定程度时,关闭非核心功能,保留资源给核心业务;限流在瓶颈时限制部分流量,支持人工和自动开关;拒绝服务则在负载阈值(如CPU 90%或load达2倍核数)时直接拒绝所有请求,虽暴力但有效。三者需根据系统状态灵活启用。
Q&A
秒杀系统的架构原则是什么?
秒杀系统的架构原则包括数据尽量少、请求数越少越好、路径尽量短、请求依赖越短越好,以及避免单点故障。
如何处理热门数据以提高系统性能?
处理热门数据的方法包括提前识别热门数据、使用缓存来优化读取、以及通过一致性哈希和分桶来限制热门请求的资源占用。
流量削峰的策略有哪些?
流量削峰的策略包括使用消息队列进行排队、通过答题延缓请求,以及进行分层过滤以去除无效请求。
动态分离在秒杀系统中有什么作用?
动态分离可以将动态数据和静态数据分开处理,从而减少请求的复杂性,提高系统性能。
秒杀系统中如何设计库存扣减逻辑?
库存扣减逻辑可以采用下单扣库存、付款扣库存和预扣库存的方法,以避免因库存不足导致的订单问题。
在秒杀系统中,如何提高系统的可用性?
提高系统可用性的方法包括多机房布置、合理的超时机制、全面的监控和及时的故障处理。