这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天
实践课秒杀系统
所谓秒杀系统,就是在限定时间内实现大批量高并发地下单,保证高性能和高并发的系统。与普通电商系统不同,秒杀系统需要考虑的因素更加复杂,特别是当并发量增加时。
为了解决这些问题,系统需要采用一些优化技巧,如限流,缓存,CDN 等。同时,服务的拆分和整合也很重要,例如将用户服务和风控服务分开,避免因为单个服务的瓶颈导致整个系统瘫痪。
此外,对系统的可扩展性进行评估和优化也是很重要的。通过分析系统瓶颈,找到扩展的点,使系统在并发量增加时仍然可以持续稳定运行。
可用性和稳定性也是秒杀系统的关键因素。在整个系统中要确保可观测性,并进行全链路测试,确保系统在面临极端情况时也能保持稳定。同时,要对系统进行容灾演练,以验证其在紧急情况下的反应能力。
系统设计方法论
场景分析:什么系统,需要那些功能,多大的并发量 储存设计:数据如何组织,SQL 存储,NoSQL 存储 服务设计:业务功能实现和逻辑整合
可扩展性: 为了提高秒杀系统的扩展性,需要考虑以下因素:
- 分布式架构设计:分布式系统可以支持更大的并发请求,并且容易扩展。
- 容灾措施:如果单个节点故障,应该有预先的容灾措施来保证服务的稳定性。
- 可用性提高:可以通过诸如负载均衡、限流和 CDN 等技术提高系统的可用性。
- 缓存优化:缓存可以提高读取的速度,减少数据库的读取压力。
系统瓶颈:
要保证秒杀系统的高性能,需要识别并解决系统的瓶颈,这可以通过以下几种方式实现:
- 火焰图分析:可以通过火焰图分析工具识别系统中的性能瓶颈。
- 链路追踪:可以通过链路追踪工具识别系统中的请求瓶颈。
- 性能测试:可以通过大量的性能测试来识别系统中的瓶颈。
如何保证可用性和稳定性:链路梳理,可观测性,全链路测试,稳点性控制,容灾演练。
秒杀系统的特点:瞬时流量高、读多写少、实时性要求高 秒杀系统的挑战:资源成本、高性能、扩展性、防止超卖、健壮性、反欺诈、流量的管控
场景
功能:
- 秒杀活动发布
- 秒杀商品详情
- 秒杀下单
并发:
- 万人参与秒杀
- QPS 1W+
- TPS 1K+
存储
MySQL -> Redis -> Localcache
服务
子服务:
- 用户服务
- 风控服务
- 活动服务
- 订单服务
基础组件
- ID 生成
- 缓存组件
- MQ 组件
- 限流组件
扩展
流量隔离、CDN、缓存优化、流量管控、数据库扩展、MQ 扩展 服务水平提高、Redis 扩展