这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天
一、本堂课重点内容:
- 系统设计方法论
- 电商秒杀业务介绍
- 课程实践
- 课程总结
二、详细知识点介绍:
引言
-
为什么要做系统设计
-
个人
For面试
个人能力提升
拓展技术视野
-
工作
业务驱动
系统重构
突破和创新
-
-
系统设计的概念是什么
为了达成某种目的,通过个体组成整体的过程
系统
- 关联的个体
- 规则运作
- 组成工作的整体
设计
- 设想和计划
- 目的
- 过程安排
-
如何做系统设计
-
4S分析法
场景分析 (Scenario)
- 什么系统,需要哪些功能,多大的并发量
存储设计 (Storage)
- 数据如何组织,Sgl存储,NoSgl存储
服务设计 (Service)
- 业务功能实现和逻辑整合
可扩展性 (Scale)
- 解决设计缺陷,提高鲁棒性、扩展性
-
-
如何分析系统瓶颈和优化
- 火焰图分析
- 链路分析
- 全链路压测
-
如何验证系统的可用性和稳定性
- 链路梳理
- 核心链路
- 流量漏斗
- 强弱依赖
- 可观测性
- 链路追踪
- 核心监控
- 业务报警
- 全链路测试
- 压力测试
- 负载测试
- 容量测试
- 稳定性控制
- 系统限流
- 业务兜底
- 熔断降级
- 容灾演练
- 混沌工程
- 应急手册
- 容灾预案
- 链路梳理
电商和秒杀
基本概念
- Spu(Standard Product Unit)
- Sku(Stock Keeping Unit)
- 秒杀业务的特点
- 瞬时流量高
- 读多写少
- 实时性要求高
秒杀的挑战
- 资源有限性
- 反欺诈
- 高性能
- 防止超卖
- 流量管控
- 扩展性
- 鲁棒性
设计秒杀系统
4S分析
-
场景
功能:
- 秒杀活动发布
- 秒杀商品详情
- 秒杀下单
并发:
- 万人参与秒杀
- QPS 1w+
- TPS 1k+
-
存储
MySQL -> Redis -> Localcache
-
服务
子服务:
- 用户服务
- 风控服务
- 活动服务
- 订单服务
基础组件:
- ID生成器
- 缓存组件
- MQ组件
- 限流组件
-
扩展
- 流量隔离
- 数据库扩展
- 服务水平扩展
- CDN
- MQ扩展
- 缓存优化
- Redis扩展
- 服务垂直扩展
- 流量管控
系统架构图
实践
秒杀流程
总结
高性能系统的通用设计思想