这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天
系统设计方法论
如何评估一个系统: 可用性, 扩展性, 安全性, 易用性, 性能, 耦合性, 可维护性, 伸缩性
系统设计的定义
-
系统: 关联的个体, 规则运作, 组成工作的整体
-
设计: 设想和计划, 目的, 过程安排
定义: 为了达成某种目的, 通过个体组成整体的过程
如何做系统设计
4S法则: scenario, storage, service, scale
- 场景: 什么系统, 需要哪些功能, 多大并发量
- 存储: 数据如何组织, sql存储, nosql存储
- 服务: 业务功能实现
- 可扩展性: 解决设计缺陷, 提高鲁棒性, 扩展性
如何发现系统瓶颈
- 火焰图分析
- 链路追踪
- 性能测试
如何保证可用性和稳定性
- 链路梳理: 核心链路, 流量漏斗, 强弱依赖
- 可观测性: 链路追踪, 核心监控, 业务报警
- 全链路测试: 压力测试, 负载测试, 容量测试
- 稳定性控制: 系统限流, 业务兜底, 熔断降级
- 容灾演练: 混沌工程, 应急手册, 容灾预案
电商秒杀业务
电商介绍
- 消费者侧
- 供给侧
- 交易环境
商品: 具有交易价值和属性的信息载体
- SPU: standard product unit 商品基本信息等
- SKU: stock keeping unit 库存及价格信息
秒杀业务
- 瞬时流量高
- 读多写少
- 实时性要求高
挑战: 资源成本, 反欺诈, 高性能, 防止超卖, 流量管控, 扩展性, 鲁棒性
4S原则设计秒杀业务
场景
- 功能: 秒杀活动发布, 秒杀商品详情, 秒杀下单
- 并发: 万人级并发量, qps 1w+, tps 1k+
存储
mysql, redis, localcache
服务
- 子服务: 用户服务, 风控服务, 活动服务, 订单服务
- 基础组件: ID生成器, 缓存组件, MQ组件, 限流组件
扩展
流量隔离, CDN, 缓存优化, 流量管控
服务水平垂直扩展