系统设计方法论 | 青训营笔记

85 阅读2分钟

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

系统设计方法论

为什么要做系统设计:

  • 个人角度

    • for面试
    • 个人能力提升
    • 拓展技术视野
  • 工作角度

    • 业务驱动
    • 系统重构
    • 突破和创新

系统设计的定义:

  • 系统

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

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

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

系统设计的流程

讲座中提供一个参考的流程:

  1. 场景分析
  2. 存储设计
  3. 服务设计
  4. 可扩展性

如何发现系统的瓶颈:

  • 火焰图分析

    针对单个实例的分析,分析cpu、内存等

  • 链路追踪

    对同一个请求进行链路追踪,确认请求经过哪些服务以及相关的耗时情况

  • 性能测试

如何保证可用性和稳定性?

  • 链路梳理

    核心链路(要梳理出来一条核心的链路,比如电商对应的可能是计算价格提单下单支付等,核心链路之外的就是非核心服务,那么对于非核心依赖,在出错的时候就可以对其进行降级,而对核心链路进行重点保障)

    流量漏斗

    强弱依赖(就是上面说的,出错时候弱依赖可以降级,而强依赖不行)

  • 可观测性

    链路追踪

    核心监控

    业务报警

  • 全链路测试

    压力测试(临界点)

    负载测试

    容量测试

    关于上面三个测试可以看一下: cloud.tencent.com/developer/n…

  • 稳定性控制

    系统限流

    业务兜底

    熔断降级

  • 容灾演练

    混沌工程

    应急手册

    容灾预案

电商秒杀业务介绍

秒杀是电商里面的一个子业务,所以需要了解一下相关的背景知识。

电商对应有人、货、场

秒杀业务特点:

  • 瞬时流量高
  • 读多写少
  • 实时性要求高(下完单要看到结果)

秒杀业务的挑战:

  • 资源成本(如果资源是无限的,那么我们甚至都不需要考虑效率)
  • 高性能
  • 扩展性
  • 防止超卖(秒杀价格便宜,因为设计问题多卖了肯定不行)
  • 反欺诈(秒杀价格比较低,要防灰黑产)
  • 鲁棒性
  • 流量管控

如何设计秒杀系统

场景上:

  • 功能

    • 秒杀活动发布
    • 秒杀商品详情
    • 秒杀下单
  • 并发:

    • 万人参与
    • QPS 1w+
    • TPS 1k+

存储上,使用三级存储

mysql-> redis -> local cache

服务:

  • 子服务

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

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

课程实践

剩下内容就是分析代码了。