系统设计|青训营笔记

89 阅读2分钟

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

系统设计

为什么要做系统设计

  1. for 个人: 面试,个人能力提升,拓展技术视野
  2. for 工作:业务驱动,系统重构,突破和创新

如何评估一个系统

  1. 可用性
  2. 易用性
  3. 可维护性
  4. 安全性
  5. 扩展性
  6. 耦合性
  7. 伸缩性
  8. 性能

系统设计的流程

  1. 场景分析:什么系统,需要哪些功能,多大的并发量
  2. 存储设计:数据如何组织,sql存储,nosql存储
  3. 服务设计:服务设计
  4. 可扩展性:解决设计缺陷,提高鲁棒性,扩展性

如何发现系统的瓶颈

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

如何保证可用性和稳定性

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

秒杀系统的设计

秒杀的场景

  1. 功能:秒杀活动发布;秒杀商品详情;秒杀下单
  2. 并发:万人参与秒杀;QPS 1w+;TPS 1w+

秒杀业务的特点

  1. 瞬时流量高
  2. 读多写少
  3. 实时性高

秒杀的挑战

  1. 高性能
  2. 资源成本
  3. 扩展性
  4. 防止超卖
  5. 反欺诈
  6. 鲁棒性
  7. 流量控制

系统架构图

25a0404dd99240e18498ff1b9d7cda1d_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.webp

nigix用于流量分发,业务服务分为三个:发布活动,秒杀详情和秒杀下单;其他方面的组件包括了分布式id生成器,限流组件,mq组件,cache组件;数据库方面集成了mysql,redis,使用了rocketmq中间件。

秒杀流程图

1d9fbce818f349288dd5c330ec4955bb_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.webp