这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天
一、本堂课重点内容
- 系统设计
二、详细知识点介绍
1.为什么要做系统设计
对于个人来言:面试、个人能力的提升、拓展技术视野。对于工作来言:业务驱动、系统重构、突破和创新。
通过系统的可用性、安全性、易用性、可维护性、性能、耦合性、伸缩性、扩展性来评估一个系统。
2.系统设计的定义
系统:
- 关联的个体
- 规则运作
- 组成工作的整体
设计:
- 设想和计划
- 目的
- 过程安排
3.如何做系统设计
- 场景分析:什么系统,需要哪些功能、多大的并发量。
- 存储设计:数据如何组织,Sql存储,NoSql存储。
- 服务设计:业务功能实现和逻辑整合。
- 可扩展性:解决设计缺陷,提高鲁棒性、扩展性。
4.如何发现系统的瓶颈
- 火焰图分析
- 链路追踪
- 性能测试
5.如何保证可用性和稳定性
- 链路梳理:核心链路、流量漏斗、强弱依赖
- 可观测性:联络追踪、核心监控、业务报警
- 全链路测试:压力测试、负载测试、容量测试
- 稳定性控制:系统限流、业务兜低、熔断降级
- 容灾演练:混沌工程、应急手册、容灾预案
三、课后个人总结
今天开展的系统设计方案,老师手把手教我们做一个秒杀系统,从设计的各个定义开始做起,实战项目很好的展现了系统设计在实现过程中的重要地位,今天学习的是系统设计理论概念和秒杀系统,了解到很多关于系统设计过程,从服务无状态到批量写入到最终一致性,基本的系统设计方法和问题处理保证了系统的稳定和可用,在开发过程中避不可少的需要用到系统设计方法,希望自己继续努力一点一点把系统设计的关键点掌握反复看秒杀系统的源代码,加油!