这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天
系统设计方法论
为什么要做系统设计?
解决问题
如何评估一个系统?
可用性,扩展性,安全性,易用性,可维护性,性能,耦合性,伸缩性
系统设计的定义
为了达成某种目的,通过个体组成整体的过程
系统设计有标准的流程吗?
如何做系统设计
graph TD
场景分析 --> 存储设计 --> 服务设计 --> 可扩展性
场景分析:什么系统,需要哪些功能,多大的并发量
存储设计:数据如何组织,sal存储,Nosql存储
服务设计:业务功能实现和逻辑整合
可扩展性:解决设计缺陷,提高鲁棒性、扩展性
如何发现系统瓶颈
火焰图分析,链路追踪,性能测试
如何保证可用性和稳定性
链路梳理:核心链路,流量漏斗,强弱依赖
可观测性:链路追踪,核心监控,业务报警
全链路测试:压力测试,负载测试,容量测试
稳定性控制:系统限流,业务兜底,熔断降级
容灾演练:混沌工程,应急手册,容灾预案
电商秒杀业务介绍
秒杀业务的特点
瞬时流量高,读多写少,实时性要求高
秒杀的挑战
高性能,资源成本,扩展性,防止超卖,反欺诈,鲁棒性,流量管控
如何设计秒杀系统
场景
功能
秒杀活动发布,秒杀商品详情,秒杀下单
并发
万人参与秒杀,QPS 1w+,TPS 1k+
存储
graph TD
MySQL --> Redis --> Localcache
服务
子服务
用户服务,风控服务,活动服务,订单服务
基础组件
ID生成器,缓存组件,MQ组件,限流组件
拓展
流量隔离,CDN,缓存优化,流量管控,
数据库扩展,服务水平扩展,MQ扩展,Redis扩展,服务垂直扩展