[ 系统设计| 青训营笔记]

77 阅读2分钟

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

系统设计方法论

为什么要做系统设计?

解决问题

如何评估一个系统?

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

系统设计的定义

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

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

如何做系统设计

graph TD
场景分析 --> 存储设计 --> 服务设计 --> 可扩展性

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

如何发现系统瓶颈

火焰图分析,链路追踪,性能测试

如何保证可用性和稳定性

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

电商秒杀业务介绍

秒杀业务的特点

瞬时流量高,读多写少,实时性要求高

秒杀的挑战

高性能,资源成本,扩展性,防止超卖,反欺诈,鲁棒性,流量管控

如何设计秒杀系统

场景

功能

秒杀活动发布,秒杀商品详情,秒杀下单

并发

万人参与秒杀,QPS 1w+,TPS 1k+

存储

graph TD
MySQL --> Redis --> Localcache

image.png

服务

子服务

用户服务,风控服务,活动服务,订单服务

基础组件

ID生成器,缓存组件,MQ组件,限流组件

拓展

流量隔离,CDN,缓存优化,流量管控,

数据库扩展,服务水平扩展,MQ扩展,Redis扩展,服务垂直扩展

系统架构图

image.png

课程实战

秒杀流程图

image.png