这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天
系统设计的定义
系统是关联的个体,规则运作,组成工作的整体
设计有设想和计划,目的,过程安排
简单的说,系统是为了达成某种目的,通过个体组成整体的过程
怎么做系统设计
- 场景分析,什么系统,需要那些功能,多大并发量
- 存储设计,数据怎么组织,sql?nosql储存
- 服务设计, 业务功能实现和逻辑整合
- 可扩展性,解决设计缺陷,提高鲁棒性和扩展性
如何发现系统的瓶颈呢? 可以采用火焰图分析,链路追踪,和性能测试
如何保证可用性和稳定性?
- 链路梳理,核心链路,流量漏斗,强弱依赖
- 可观察性,链路追踪,核心监控,业务报警
- 全链路测试,压力测试,负载测试,容量测试
- 稳定性控制,系统限流,业务兜底,熔断降级
- 容灾演练,混沌工程,应急手册,容灾预案
开始做秒杀
秒杀业务的特点: 瞬时流量高,读多写少,实时性要求高
做秒杀有那些挑战呢?
- 高性能,资源成本,扩展性,防止超卖,鲁棒性,反欺诈,流量监控等
场景
功能: 秒杀活动发布,秒杀商品详情,秒杀下单
并发: 万人参与,QPS 1W,TPS 1K
存储
数据库以及对应数据诺干
服务
子服务:
用户服务,天空服务,活动服务,订单服务
基础组件:
Id生成器, 缓存组件, MQ组件 ,限流组件
拓展
流量隔离,CDN,缓存优化,流量管控,数据库扩展,服务水平扩展,MQ扩展,Redis扩展,服务垂直扩展
总结
秒杀业务是一个高并发,高读的场景,我们可以采用Mysql存储库存,Redis存储token等.