day16 系统设计 | 青训营笔记

74 阅读3分钟

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

一.系统设计方法论

1.为什么要做系统设计

  • 个人
    • For面试
    • 个人能力提升
    • 拓展技术视野
  • 工作
    • 业务驱动
    • 系统重构
    • 突破与创新

如何评估一个系统

  • 可用性
  • 安全性
  • 拓展性
  • 易用性
  • 性能
  • 耦合性
  • 可维护性
  • 伸缩性

2.系统设计的概念是什么

  • 系统
    • 关联的个体
    • 规则运作
    • 组成工作的整体
  • 设计
    • 设想和计划
    • 目的
    • 过程安排

3.如何做系统设计(4S分析法)

  • 场景分析(Scenario)
    • 什么系统,需要哪些功能,多大并发量
  • 存储设计(Storage)
    • 数据如何组织,Sql存储,NoSql存储
  • 服务设计(Service)
    • 业务功能实现和逻辑整合
  • 可扩展性(Scale)
    • 解决设计缺陷,提高鲁棒性、扩展性

4.如何分析系统瓶颈和优化

  • 火焰图分析
  • 链路分析
  • 全链路压测

5.如何验证系统的可用性和稳定性

  • 链路梳理

    • 核心链路
    • 流量漏斗
    • 强弱依赖
  • 可观测性

    • 链路追踪
    • 核心监控
    • 业务报警
  • 全链路测试

    • 压力测试
    • 负载测试
    • 容量测试
  • 稳定性控制

    • 系统限流
    • 业务兜底
    • 熔断降级
  • 容灾演练

    • 混沌工程
    • 应急手册
    • 容灾预案

二.电商和秒杀

1.基本概念

  • 商品: 具有交易价值和属性的信息载体。

    • Spu(Standard Product Unit)

      • SPU = Standard Product Unit(SPU)是商品信息聚合的最小单位。它是一组可重复使用且易于检索的标准化信息,描述了产品的特性。
      • 在电子商品信息化过程中,商品的特征可以用多个“属性值对”来描述。具有相同“属性值对”的产品可以抽象为一个SPU。
      • 另一方面,这些“属性值对”固化在SPU中,并逐渐标准化。
      • 基于SPU的商品信息结构可以实现丰富的应用,如商品信息与资讯、评论等spus的整合。
    • Sku(Stock Keeping Unit)

      • SKU = 库存单位。
      • 对于电子商务:
        • SKU是指一个商品,每个商品都有一个SKU,方便电商品牌识别。
        • 如果产品是多色的,则有多个 SKU。例如,如果一件衣服有红色、白色和蓝色,则 SKU 代码不同。如果它们相同,就会出现混乱和错误的交付。
  • 秒杀业务的特点

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

2.秒杀的挑战

  • 资源有限性
  • 反欺诈
  • 高性能
  • 防止超卖
  • 流量管控
  • 扩展性
  • 鲁棒性 : 在异常和危险情况下系统生存的能力

三.设计秒杀系统

1.4S分析

1.场景

  • 功能
    • 秒杀活动发布
    • 秒杀商品详情
    • 秒杀下单
  • 并发
    • 万人参与秒杀
    • QPS 1W+
    • TPS 1k+

2.存储

Mysql -> Redis -> Localcache(比redis性能更高)

3.功能

  • 子服务

    • 用户服务
    • 风控服务
    • 活动服务
    • 订单服务
  • 基础组件

    • ID生成器
    • 缓存组件
    • MQ组件
    • 限流组件

4.扩展

  • 流量隔离
  • CDN
  • 缓存优化
  • 流量管控

- 数据库扩展 - MQ扩展 - Redis扩展 - 服务水平扩展 - 服务垂直扩展

2.系统架构图

3.秒杀流程

参考

Cpu与Cku是什么
青训营课程:系统设计