系统设计| 青训营笔记

39 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天

系统设计的定义

系统是关联的个体,规则运作,组成工作的整体
设计有设想和计划,目的,过程安排
简单的说,系统是为了达成某种目的,通过个体组成整体的过程

怎么做系统设计

  1. 场景分析,什么系统,需要那些功能,多大并发量
  2. 存储设计,数据怎么组织,sql?nosql储存
  3. 服务设计, 业务功能实现和逻辑整合
  4. 可扩展性,解决设计缺陷,提高鲁棒性和扩展性

如何发现系统的瓶颈呢? 可以采用火焰图分析,链路追踪,和性能测试

如何保证可用性和稳定性?

  1. 链路梳理,核心链路,流量漏斗,强弱依赖
  2. 可观察性,链路追踪,核心监控,业务报警
  3. 全链路测试,压力测试,负载测试,容量测试
  4. 稳定性控制,系统限流,业务兜底,熔断降级
  5. 容灾演练,混沌工程,应急手册,容灾预案

开始做秒杀

秒杀业务的特点: 瞬时流量高,读多写少,实时性要求高
做秒杀有那些挑战呢?

  • 高性能,资源成本,扩展性,防止超卖,鲁棒性,反欺诈,流量监控等

场景

功能: 秒杀活动发布,秒杀商品详情,秒杀下单
并发: 万人参与,QPS 1W,TPS 1K

存储 数据库以及对应数据诺干 服务
子服务:
用户服务,天空服务,活动服务,订单服务 基础组件:
Id生成器, 缓存组件, MQ组件 ,限流组件

拓展
流量隔离,CDN,缓存优化,流量管控,数据库扩展,服务水平扩展,MQ扩展,Redis扩展,服务垂直扩展

总结

秒杀业务是一个高并发,高读的场景,我们可以采用Mysql存储库存,Redis存储token等.