系统设计方法论介绍 | 青训营笔记

56 阅读3分钟

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

今天的目标是为了如何进行系统设计,我们进行系统设计的时候需要有很多的考量。同时我们还要通过各种方式来进行我们的系统设计,通过这次的学习明白系统设计的重要性。

1.系统设计方法论

系统设计的问题:

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

为什么要做系统设计

  • 对于个人来说
    • 可以克服面试
    • 个人能力提升
    • 拓展技术视野
  • 对于工作来说
    • 业务驱动
    • 系统重构
    • 突破和创新

目标就是解决这些问题

如何评估一个系统

我们可以通过以下几个方面来评估一个系统

  • 可用性
  • 安全性
  • 扩展性
  • 易用性
  • 性能
  • 耦合性
  • 可维护性
  • 伸缩性

系统设计的定义

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

定义:为了达成某种目的,通过个体组成整体的过程。

如何做系统设计

俗称 4s:分别为场景、存储、服务、扩展

  • 场景分析(Scenario):什么是系统,需要哪些功能,多大的并发量
  • 存储设计(Storage):数据如何组织,Sql存储,NoSql存储
  • 服务设计(Service):业务功能实现和逻辑整合
  • 可扩展性(Scale):解决设计缺陷,提高鲁棒性、扩展性

如何发现系统的瓶颈

  • 火焰图分析:火焰图(FlameGraph)是 svg 格式的矢量图,是先通过 perf 等工具分析得到结果,并将该结果生成的具有不同层次且支持互动的图片,看起来就像是火焰,这也是它的名字的由来。
  • 链路追踪:链路追踪(tracing)即调用链监控,特点是通过记录多个在请求间跨服务完成的逻辑请求信息,帮助开发人员优化性能和进行问题追踪。链路追踪可以捕获每个请求遇到的异常和错误,以及即时信息和有价值的数据。
  • 性能测试:性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。

如何保证可用性和稳定性

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