这是我参与「第五届青训营」伴学笔记创作活动的第 10 天
一、本堂课具体内容
- 系统设计方法论
- 电商秒杀业务
二、详细知识点介绍:
-
系统设计方法论
-
为什么要做系统设计
在个人方面,应付面试,对个人能力的提升,扩展技术视野
在工作方面:业务驱动,系统重构,突破和创新。
-
如何评估一个系统
可用性,安全性,扩展性,易用性,可维护性等
-
系统设计定义
系统是一些关联的个体,按照特殊规则运作,组成完成工作的整体,设计是按照设想和计划完成目的的过程安排。系统设计定义是为了达成某种目的,通过个体组成整体的过程。
-
系统设计标准的流程
场景分析-存储设计-服务设计-可扩展性
-
如何发现系统的瓶颈
火焰分析图,链路追踪,性能测试。
-
如何保证可用性和稳定性:
- 链路梳理:核心链路,流量漏斗,强弱依赖
- 可观测性:链路追踪,核心监控,业务报警
- 全链式测试:压力测试,负载测试,容量测试
- 稳定性测试:系统限流,业务兜底,熔断降级
- 容灾演练:混沌工程,应急手册,容灾预案
-
-
电商秒杀业务介绍
-
秒杀的特点
瞬时流量高、读多写少、实时性要求高
-
秒杀的挑战
资源有限性、反欺诈、高性能、防止超卖、流量管控、扩展性、鲁棒性
-
如何设计秒杀系统
- 功能:秒杀活动发布,秒杀商品详情,秒杀下单
- 并发:万人参与秒杀,QPS1w+,TPS1k+
-
储存
分三层 : MySQL-> Redis-> Localcache
-
服务
- 子服务:用户服务,风控服务,活动服务,订单服务
- 基础组件:ID生成器,缓存组件,MQ组件,限流组件
-
拓展
- 流量隔离
- CDN
- 缓存优化
- 流量管控
- 数据库扩展
- 服务水平扩展
- MQ扩展
- Redis扩展
- 服务垂直扩展
-
系统架构
-