系统设计 | 青训营笔记

85 阅读3分钟

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

系统设计方法论

我们学习一个东西,首先需要认识是什么、为什么、怎么做,只有我们学会如何多多向自己提出问题,发现问题,解决问题,才能更快地成长、学习。

  • 为什么要做系统设计?
  • 系统设计的定义是什么?
  • 怎么做系统设计,如何落地一个系统设计?
  • 系统功能实现之后,如何分析瓶颈并优化?
  • 如何验证系统的可用性和稳定性?

为什么要做系统设计

为什么要做系统设计?

我们从两个层面来回答这个问题

首先,对于个人来说:

  • 系统设计有助于帮助我们进行面试
  • 学习系统设计能够提升个人能力
  • 系统设计可以帮助我们开拓技术视野

其次,对于工作来说:

  • 系统设计可以帮助进行业务驱动
  • 好的系统设计能够更好的进行重构和扩展
  • 系统设计也可以帮助我们突破一些瓶颈,实现突破和创新

总的来说,系统设计是为了帮助我们来更好地解决问题的。

系统设计的定义是什么

要想理解系统设计的概念,我们先从系统出发

我们应该如何评估一个系统呢?

评估一个系统可以从很多个角度出发:可用性、安全性、扩展性、易用性、性能、耦合性、可维护性、伸缩性等等

而系统设计的定义可以分为系统和设计两个方面:

  • 系统:
    • 关联的个体
    • 规则运作
    • 组成工作的整体
  • 设计:
    • 设想和计划
    • 目的
    • 过程安排

综上所述,系统设计就是一个为了达成某种目的,通过个体组成整体的过程

如何进行系统设计

系统设计有标准的流程吗?

答案是有的:

场景 -> 存储 -> 服务 -> 扩展

而同时我们也需要对需求进行分析:

  • 什么系统,需要哪些功能,多大的并发量
  • 数据如何组织,Sql存储,NoSql存储
  • 业务功能实现和逻辑整合
  • 解决设计缺陷,提高鲁棒性,扩展性

如何分析瓶颈并优化

同时呢,在整个系统中也需要进行一定的监控和分析,这里我们就需要学习:

  • 火焰图分析
  • 链路追踪
  • 性能测试
  • 等等知识

通过这些知识我们可以对整个系统进行监控,分析系统的瓶颈,更好地进行系统设计

如何保证可用性和稳定性

可用性和稳定性主要体现在下面几个方面中:

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

引用参考

‍​​⁤​​​​⁡⁣⁢‬‬​⁣​⁢‍‌‌⁢⁤‌⁣​​⁤​⁤⁤⁣⁡​⁢⁢‍​​‍⁢⁢⁢​⁣‬手把手教你做系统设计之秒杀系统 .pptx - 飞书云文档 (feishu.cn)