手把手教你做系统设计之描述 | 青训营笔记

47 阅读2分钟

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

如何做系统设计

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

如何发现系统的瓶颈

火焰图分析,链路追踪和性能测试

如何保证可用性和稳定性

通过链路梳理,分析核心链路的构造,分析流量漏斗,分析系统的强弱依赖。

构建可观测性指标,如链路追踪,核心监控,业务报警等

进行全链路的测试,如压力测试,负载测试,容量测试等

稳定性控制,如在系统设计上考虑系统限流,业务兜底,熔断降级等

容灾演练:构建混沌工程,应急手册和容灾预案。

秒杀业务系统设计

秒杀业务的特点由瞬时流量高,读多写少,实时性要求高等,在系统性能上的挑战由高性能,扩展性强,鲁棒性高,反欺诈,关注资源成本,防止超卖,流量管控等

秒杀场景

在功能上一个秒杀场景涉及秒杀活动的发布,秒杀商品的详情页,以及秒杀下单的步骤,在并发上,可能有1万qps。

存储

可以设定有从底到上的三级数据存储结构,分别是mysql-redis-localcache

服务

子服务可以划分为用户服务,风控服务,活动服务和订单服务,基础组件可能要用到ID生成器,缓存组件,MQ组件和限流组件。

扩展

对于设计的系统的扩展性,首先对于流量要进行分类隔离,对流量进行管控,可以采用CDN,本地要做缓存优化,对于数据库层面的扩展,可以考虑水平和竖直扩展等方式。

系统架构

image.png