秒杀系统设计| 青训营笔记

54 阅读2分钟

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

系统设计

前置

如何评估一个系统

可用性、安全性、扩展性、性能、耦合性、可伸缩性、易用性等

如何做系统设计

系统设计的标准流程

  1. 场景分析
    什么系统、需要哪些功能、多大的并发量
  2. 储存设计
    数据如何组织,sql nosql
  3. 服务设计
    业务功能实现和逻辑整合
  4. 可扩展性
    解决设计缺陷,提高稳定性 、扩展性

如何发现系统瓶颈

  1. 火焰图分析
  2. 链路追踪
  3. 性能测试

如何保证可用性以及稳定性

  1. 链路梳理
    核心链路,流量漏斗,强弱依赖
  2. 可观测性
    链路追踪、核心监控、业务报警
  3. 全链路检测
    压力测试、负载测试、容量测试
  4. 稳定性控制
    系统限流、业务兜底、熔断降级
  5. 容灾演习
    容灾预案、混沌工程、应急手册

电商秒杀业务

秒杀挑战

包括资源成本、高性能、扩展性、防止超卖、鲁棒性、流量管控、反欺诈

如何设计秒杀系统

  • 场景
    功能包括秒杀活动发布、商品详情、秒杀下单等 并发量高;
  • 存储

image.png

  • 服务
    子服务:用户服务、风控服务、活动服务、订单服务;
    基础组件:ID生成器、缓存组件、MQ组件、限流组件;

  • 扩展
    流量隔离、CDN、缓存优化、流量管控、数据库扩展、服务扩展(负载均衡)、MQ扩展、Redis扩展等

系统架构图

image.png

课程实践

秒杀流程图

image.png

小结

本次课程主要讲述了系统设计以及秒杀系统实践,工程实践部分难度较大,需要多阅读代码。