手把手教你做系统设计之秒杀系统 | 青训营笔记

62 阅读2分钟

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

今天整理了系统设计的相关学习笔记。

系统设计的定义

系统

  • 关联的个体
  • 规则运作
  • 组成工作的整体

设计

  • 设想和计划
  • 目的
  • 过程安排

定义: 为了达成某种目的,从个体组成整体的过程。

如何做系统设计

  1. 场景分析

什么是系统,需要哪些功能,多大的并发量

  1. 存储设计

数据如何组织,Sql存储,NoSql存储

  1. 服务设计

业务功能实现逻辑整合

  1. 可扩展性

解决设计缺陷,提高扩展性

如何发现系统的瓶颈

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

如何保证可用性和稳定性

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

秒杀系统的特点

瞬时流量高、读多写少、实时性要求高

秒杀的挑战

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

如何设计秒杀系统

场景

功能:

  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扩展、服务垂直扩展、流量管控、缓存优化

系统架构图

image.png