实践课秒杀系统 | 青训营笔记

158 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天

实践课秒杀系统

所谓秒杀系统,就是在限定时间内实现大批量高并发地下单,保证高性能和高并发的系统。与普通电商系统不同,秒杀系统需要考虑的因素更加复杂,特别是当并发量增加时。

为了解决这些问题,系统需要采用一些优化技巧,如限流,缓存,CDN 等。同时,服务的拆分和整合也很重要,例如将用户服务和风控服务分开,避免因为单个服务的瓶颈导致整个系统瘫痪。

此外,对系统的可扩展性进行评估和优化也是很重要的。通过分析系统瓶颈,找到扩展的点,使系统在并发量增加时仍然可以持续稳定运行。

可用性和稳定性也是秒杀系统的关键因素。在整个系统中要确保可观测性,并进行全链路测试,确保系统在面临极端情况时也能保持稳定。同时,要对系统进行容灾演练,以验证其在紧急情况下的反应能力。

系统设计方法论

场景分析:什么系统,需要那些功能,多大的并发量 储存设计:数据如何组织,SQL 存储,NoSQL 存储 服务设计:业务功能实现和逻辑整合

可扩展性: 为了提高秒杀系统的扩展性,需要考虑以下因素:

  • 分布式架构设计:分布式系统可以支持更大的并发请求,并且容易扩展。
  • 容灾措施:如果单个节点故障,应该有预先的容灾措施来保证服务的稳定性。
  • 可用性提高:可以通过诸如负载均衡、限流和 CDN 等技术提高系统的可用性。
  • 缓存优化:缓存可以提高读取的速度,减少数据库的读取压力。

系统瓶颈:

要保证秒杀系统的高性能,需要识别并解决系统的瓶颈,这可以通过以下几种方式实现:

  • 火焰图分析:可以通过火焰图分析工具识别系统中的性能瓶颈。
  • 链路追踪:可以通过链路追踪工具识别系统中的请求瓶颈。
  • 性能测试:可以通过大量的性能测试来识别系统中的瓶颈。

如何保证可用性和稳定性:链路梳理,可观测性,全链路测试,稳点性控制,容灾演练。

秒杀系统的特点:瞬时流量高、读多写少、实时性要求高 秒杀系统的挑战:资源成本、高性能、扩展性、防止超卖、健壮性、反欺诈、流量的管控

场景

功能:

  1. 秒杀活动发布
  2. 秒杀商品详情
  3. 秒杀下单

并发:

  1. 万人参与秒杀
  2. QPS 1W+
  3. TPS 1K+

存储

MySQL -> Redis -> Localcache

服务

子服务:

  1. 用户服务
  2. 风控服务
  3. 活动服务
  4. 订单服务

基础组件

  1. ID 生成
  2. 缓存组件
  3. MQ 组件
  4. 限流组件

扩展

流量隔离、CDN、缓存优化、流量管控、数据库扩展、MQ 扩展 服务水平提高、Redis 扩展