这是我参与「第五届青训营 」笔记创作活动的第十二天
一、本堂课重点内容:
- 系统设计方法论
二、详细知识点介绍:
系统设计需要解决的问题
在了解系统设计的一些知识之前,先来了解一下,要做系统设计,那么需要解决哪些问题?
为什么要做系统设计?
系统设计的定义是什么?
怎么做系统设计,如何落地一个系统?
系统功能实现之后,如何分析瓶颈并优化?
如何验证系统的可用性和稳定性?
为什么要做系统设计
对于个人来说:对于个人能力提升以及拓展技术视野
对于工作来说:根据业务驱动可以针对性进行系统重构和优化,同时做出针对性的突破和创新,从而优化用户体验。
如何评估一个系统
评价一个系统主要从可用性、扩展性、安全性、易用性、耦合性、性能、可维护性、伸缩性这几个方面评价。
系统设计的定义
系统设计的定义:为了达成某种目的,通过个体组成整体的过程
系统:
- 关联的个体
- 规则运作
- 组成工作的整体
设计:
- 设想和计划
- 目的
- 过程安排
如何做系统设计
- 场景分析(Scenario):是什么系统,需要哪些功能,需要多大的并发量
- 存储设计(Storage):数据如何组织,Sql存储,NoSql存储
- 服务设计(Service):业务功能实现和逻辑整合
- 可扩展性(Scale):解决设计缺陷,提高鲁棒性、扩展性
如何发现系统的瓶颈
- 火焰图分析
- 链路追踪
- 性能测试
如何保证可用性和稳定性
链路梳理:核心链路、流量漏斗、强弱依赖
可观测性:链路追踪、核心监控、业务报警
全链路测试:压力测试、负载测试、容量测试
稳定性控制:系统限流、业务兜底、熔断降级
容灾演练:混沌工程、应急工程、容灾预案
三、课后个人总结:
这次学习主要是理论性质的东西,对于自己的知识理论体系有了一个较大的补充,同时,对于实际生产开发任务中的系统的一些保障可靠性的机制有了一个大概的了解。