这是我参与「第五届青训营 」伴学笔记创作活动的第 17 天
对课程中学到的重要知识点做了笔记,方便后续的回顾
1. 系统设计方法论
1.1 系统设计的定义是什么
系统
- 关联的个体
- 规则运作
- 组成工作的整体
设计
- 设想和计划
- 目的
- 过程安排
定义:为了达成某种目的,通过个体组成整体的过程
不同于架构、组件、服务、模块、框架
1.2 为什么要做系统设计
个人
- For面试
- 个人能力提升
- 拓展技术视野
工作
- 业务驱动
- 系统重构
- 突破和创新
1.3 怎么做系统设计,如何落地一个系统
系统设计有标准的流程么——4S分析法
- 场景分析(Scenario) 什么系统,需要哪些功能,多大的并发量
- 存储设计(Storage) 数据如何组织,Sql存储,NoSql
- 存储服务设计(Service) 业务功能实现和逻辑整合
- 可扩展性(Scale) 解决设计缺陷,提高鲁棒性、扩展性
1.4 系统功能实现之后,如何分析瓶颈并优化
- 火焰图分析
- 链路追踪
- 性能测试
1.5 如何验证系统的可用性和稳定性
1.5.1 链路梳理
核心链路
流量漏斗
强弱依赖
1.5.2 可观测性
链路追踪
核心监控
业务报警
1.5.3 全链路测试
压力测试
负载测试
容量测试
1.5.4 稳定性控制
系统限流
业务兜底
熔断降级
1.5.5 容灾演练
混沌工程
应急手册
容灾预案
2. 电商秒杀业务介绍
2.1 电商介绍
- 货:供给侧:商品,商家,供应链
- 人:消费者侧:消费者,用户,流量来源
- 场:交易环境:线下商场,线上电商
- 商品:具有交易价值和属性的信息载体
- 标准产品单元:SPU: Standard Product Unit
- 库存保持单元:SKU: Stock Keeping Unit
2.2 秒杀业务的特点
- 瞬时流量高
- 读多写少
- 实时性要求高
2.3 秒杀的挑战
- 资源成本
- 反欺诈
- 防止超卖
- 高性能
- 流量管控
- 扩展性
- 鲁棒性
2.4 那如何设计秒杀系统
4S分析法
2.4.1 场景(Scenario)
功能:
- 秒杀活动发布
- 秒杀商品详情
- 秒杀下单
并发∶
- 万人参与秒杀
- QPS 1w+
- TPS 1k+
2.4.2 存储(Storage)
Localcahce、redis、mysql
2.4.3 服务(Service)
子服务
- 用户服务
- 风控服务
- 活动服务
- 订单服务
基础组件︰
- ID生成器
- 缓存组件
- MQ组件
- 限流组件
2.4.4 扩展(Scale)
- 流量隔离
- CDN
- 缓存优化
- 流量管控
- 数据库扩展
- 服务水平扩展
- Redis扩展
- 服务垂直扩展
- MQ扩展
3. 课程实践
4. 课程总结
课后个人总结
- 了解了一个对于电商业务,应该怎么做系统设计
- 了解到系统设计时候,需要考虑什么关键点
参考资料
[实践课-手把手教你做系统设计]juejin.cn/post/719438…