这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天
系统设计方法论
系统设计的问题
怎么做系统设计,如何落地一个系统
系统功能实现之后,如何分析瓶颈并优化
系统设计的定义是什么
如何验证系统的可用性和稳定性
为什么要做系统设计
如何评价一个系统
- 可用性
- 扩展性
- 安全性
- 易用性
- 耦合性
- 性能
- 可维护性
- 伸缩性
系统设计的定义
系统:
- 关联的个体
- 规则运作
- 组成工作的整体
设计
- 设想和计划
- 目的
- 过程安排
如何做系统设计
- 场景分析:什么系统,需要哪些功能,多大的并发
- 存储设计:数据如何组织,Sql存储,NoSql存储
- 服务设计:业务功能实现和逻辑整合
- 可扩展性:解决设计缺陷,提高鲁棒性、扩展性
如何发现系统的瓶颈
- 火焰图分析
- 链路追踪
- 性能测试
如何保证可用性和稳定性
链路梳理
核心链路
流量漏斗
强弱依赖
可观测性
链路追踪
核心监控
业务报警
全链路测试
压力测试
负载测试
容量测试
稳定性控制
系统限流
业务兜底
熔断降级
容灾演练
混沌工程
应急手册
容灾预案
秒杀业务的特点
- 瞬时流量高
- 读多写少
- 实时性要求高
秒杀的挑战
- 资源成本
- 反欺诈
- 防止超卖
- 高性能
- 流量管控
- 扩展性
- 鲁棒性
如何设计秒杀系统
场景
功能
秒杀活动发布
秒杀商品详情
秒杀下单
并发
万人参与秒杀
QPS 1w+
TPS 1k+
存储
graph TD
Mysql --> Redis --> Localcache
服务
子服务
用户服务
风控服务
活动服务
订单服务
基础组件
ID生成器
缓存组件
MQ组件
限流组件
扩展
- 流量隔离
- CDN
- 缓存优化
- 流量管控
- 数据库扩展
- Redis扩展
- MQ扩展
- 服务水平扩展
- 服务垂直扩展
总结
老师手把手带我们做了一个秒杀的系统,从系统开始的构思到联系具体的业务场景,再到对于电商的介绍,可以说准备工作的做的非常的充分。电商数据库的设计上做的也很全,逻辑性和可读性也非常的好,之后老师就带着我们去看代码的细节。
引用
本文全部内容来自于- 字节内部课:直播课