系统设计 | 青训营笔记

82 阅读2分钟

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

一、本堂课重点内容:

  • 系统设计方法论
  • 电商秒杀业务介绍

二、详细知识点介绍:

  • 系统设计方法论
    • 定义
      • 系统:系统是一些关联的个体,按照某种特定规则去运作,可以完成单个个体不能完成工作的整体。
      • 设计:设计是设想和计划,即目的和过程安排。
    • 系统设计思路(4s分析法)
      • ①场景分析:什么系统,需要哪些功能,多大的并发量;
      • ②存储设计:数据如何组织Sql储存,NoSql储存;
      • ③服务设计:业务功能实现和逻辑整合;
      • ④可扩展性:解决设计缺陷,提高鲁棒性,扩展性。
    • 发现系统瓶颈方法
      • 火焰图分析:单个实例分析,CPU使用,内存使用;
      • 链路追踪:对同一个请求做链路追踪,清楚此请求经过了哪些服务,在每个服务的耗时;
      • 性能测试:挖掘整个系统性能的不足。
    • 保证系统可用性和稳定性的方法
      • 链路梳理:保障核心链路,非核心依赖出错可采取降级处理;
      • 可观测性:链路追踪,核心指标监控,核心业务异常报警;
      • 全链路测试:压力测试:压到甚至超过链路临界点,观测服务是否满足可用性;负载测试:准确测试出链路的负载;容量测试:测试系统整体容量水位;
      • 稳定性控制:系统限流,业务兜底,下游依赖返回错误,从当前服务可返回兜底的数据,熔断降级;
      • 容灾演练:混沌工程,通过注入故障的方式做演练,从而沉淀出应急的操作手册,容灾预案。
  • 电商秒杀业务介绍
    • SPU(Standard Product Unit):标准化产品单元
    • SKU(Stock Keeping Unit):库存保持单元
    • 秒杀业务特点:瞬时流量高;读多写少;实时性要求高。
    • 场景:
      • 功能:秒杀活动发布,秒杀商品详情,秒杀下单;
      • 并发:万人参与秒杀,QPS 1W+,TPS 1w+.
    • 储存:MySQL → Redis → Localcache.
    • 服务:
      • 子服务:用户服务,风控服务,活动服务,订单服务;
      • 基础组件:ID生成器,缓存组件,MQ组件,限流组件。
    • 扩展:
      • 流量隔离
      • CDN(内容分发网络,提高静态资源缓存访问)
      • 缓存优化
      • 流量管控
      • 数据库扩展(读写分离,分库分表)
      • 服务水平扩展(负载均衡,反向代理)
      • MQ扩展
      • Redis扩展(读写分离,用一主多从集群模式保障可用性和稳定性)
      • 服务垂直扩展(微服务拆分)