[手把手学习系统设计| 青训营课程笔记 ]
这是我参与「第五届青训营」伴学笔记创作活动的第10天
01.系统设计方法论
如何评估一个系统
可用性、易用性、可维护性、安全性、性能、扩展性、耦合性、伸缩性
如何做系统设计
01场景分析(Scenario)
什么系统,需要哪些功能,多大的并发量
02存储设计(Storage)
数据如何组织,Sql存储,NoSql存储
03服务设计(Service)
业务功能实现和逻辑整合
04可扩展性(Scale)
解决设计缺陷,提高鲁棒性、扩展性
如何发现系统的瓶颈
火焰图分析、链路追踪、性能测试
如何保证可用性和稳定性
链路梳理 核心链路 流量漏斗 强弱依赖 可观测性 链路追踪 核心监控 业务报警 全链路测试 压力测试 负载测试 容量测试 稳定性控制 系统限流 业务兜底 熔断降级 容灾演练 混沌工程 应急手册 容灾预案
02.电商秒杀业务介绍
人: 消费者侧,消费者,用户,流量来源 货: 供给侧,商品,商家,供应链 场: 交易环境:线下商场,线上电商
秒杀业务特点:瞬时流量高,读多写少,实时性要求高
秒杀的挑战:高性能、资源成本、反欺诈、防止超卖、流量管控、扩展性、鲁棒性
如何设计秒杀系统
场景
功能:
- 秒杀活动发布
- 秒杀商品详情
- 秒杀下单
并发:
- 万人参与秒杀
- QPS 1w+
- TPS 1k+
存储
服务
子服务:
- 用户服务
- 风控服务
- 活动服务
- 订单服务
基础组件:
- ID生成器
- 缓存组件
- MQ组件
- 限流组件
扩展
流量隔离 CDN 缓存优化 流量管控
数据库扩展 服务水平扩展 MQ扩展R edis扩展 服务垂直扩展
03.课程实践
秒杀流程图: