这是我参与「第五届青训营」伴学笔记创作活动的第6天
一、系统设计的那些问题:
- 为什么要做系统设计
- 系统设计的定义是什么
- 怎么做系统设计,如何落地一个系统
- 系统功能实现后,如何分析瓶颈并优化
- 如何验证系统的可用性和稳定性
二、详细知识点介绍:
系统设计方法论
为什么要做系统设计
- 个人 :面试,个人能力提升,拓展技术视野
- 工作 : 业务驱动,系统重构,突破和创新
如何评估一个系统
性能,耦合性,可用性,易用性,可维护性,伸缩性,安全性,扩展性,
系统设计的定义
为了达成某种目的,通过个体组成整体的过程
如何做系统设计
系统设计的流程
- 场景分析(Scenario) :什么系统,需要哪些功能,多大的并发量
- 存储设计(Storage) : 数据如何组织,Sql存储,NoSql存储
- 服务设计(Service) : 业务功能实现和逻辑整合
- 可扩展性(Scale) : 解决设计缺陷,提高鲁棒性、扩展性
如何发现系统的瓶颈
火焰图分析,链路追踪,性能测试
如何保证可用性和稳定性
- 链路梳理 :核心链路,流量漏斗,强弱依赖
- 可观测性 : 链路追踪,核心监控,业务报警
- 全链路测试 :压力测试,负载测试,容量测试
- 稳定性控制 :系统限流,业务兜底,熔断降级
- 容灾演练 :混沌工程,应急手册,容灾预案
电商秒杀业务介绍,秒杀业务的特点
瞬时流量高,读多写少,实时性要求高
秒杀业务的挑战
防止超卖,流量管控,扩展性,鲁棒性, 资源成本,反欺诈,高性能,
秒杀业务的设计
场景,存储,服务,扩展四方面
- 存储:mysql -> redis -> localcache
- 服务:
- 子服务
- 基础组件: id生成器,缓存组件,MQ组件。限流组件
- 拓展
系统架构
- 用户层: web,ios,android
- 接入层:nginx
- 应用层:发布活动,秒杀详情,秒杀下单,id生成器,限流组建,MQ组建,cache组建
- 基础层:mysql ,redis, rocketmq