分布式理论学习|青训营笔记
这是我参与「第五届青训营」伴学笔记创作活动的第 4 天
在后面会依次倒叙回顾之前的学习课程,便于复习~
一、课程重点内容
- 系统设计方法论
- 电商秒杀业务介绍
下面是对课程重点内容的思考与总结,有问题或者错误,可以批评指正呐~
二、系统设计方法论
系统设计的定义:为了达成某种目的,通过个体组成整体的过程
-
系统的设计
- 场景分析:要明确以下几个问题。系统用于何种环境下,例如:全国抢票系统还是学校注册系统,需要哪些功能,需要多大的并发量。
- 存储分析:数据如何进行组织,采用关系型数据库存储还是非关系型数据库存储。
- 服务设计:业务功能实现和逻辑整合。
- 可拓展性:解决设计缺陷、提高鲁棒性、拓展性。
-
系统的分析
-
火焰图分析
-
定义:火焰图仅用一张小图,就可以定量展示所有的性能瓶颈的全景图,而不论目标软件有多么复杂。 传统的性能分析工具通常会给用户展示大量的细节信息和数据, 而用户很难看到全貌,反而容易去优化那些并不重要的地方,经常浪费大量时间和精力却看不到明显效果。传统分析器的另一个缺点是,它们通常会孤立地显示每个函数调用的延时,但很难看出各个函数调用的上下文,而且用户还须刻意区分当前函数本身运行的时间(exclusive_{-}time)和包括了其调用其他函数的时间在内的总时间(inclusive_{-}time)。
-
优势:相比之下,火焰图可以把大量信息压缩到一个大小相对固定的图片当中(通常一屏就可以显示全)。 不怎么重要的代码路径会在图上自然地淡化乃至消失,而真正重要的代码路径则会自然地凸显出来。越重要的,则会显示得越明显。火焰图总是为用户提供最适当的信息量,不多,也不少。
-
-
-
链路追踪测试
-
背景:随着业务的发展,系统逐渐庞大,服务间调用关系的复杂度也会水涨船高。一个HTTP请求可能涉及多个不同的微服务来处理,返回最后的结果。在这个调用过程中,可能会因为某个服务出现网络延迟过高或发送错误导致请求失败,此时,链路监控尤为重要。
-
-
性能测试
- 定义:包括负载测试,强度测试,数据库容bai量测试,基准测试以及竞争测试
- 主要是负载测试与基准测试
三、电商秒杀业务
-
常用术语
-
SPU:Standard Product Unit,产品基本信息,如名称、品牌、型号、类别、通用规格等。它是一个产品标识符,在同一产品的所有变体中都是唯一的。
-
SKU:Stock Keeping Unit,指产品的特定变体的唯一标识符,如尺寸、颜色和其他选项。它用于跟踪库存水平,并帮助零售商有效地管理库存。
简而言之,SPU指的是一般的产品,而SKU指的是该产品的特定版本。
-
-
业务特点
- 瞬时流量高
- 读多写少
- 实时性要求高
-
业务挑战
资源成本、流量管控、鲁棒性、扩展性...
-
设计方法
-
场景
-
功能
- 秒杀活动发布
- 秒杀商品详情
- 秒杀下单
-
并发
- 万人参与秒杀
- QPS 1w+
- TPS 1k+
-
-
存储
-
-
服务
-
子服务
- 用户服务
- 风控服务
- 活动服务
- 订单服务
-
基础组件
- ID生成器
- 缓存组件
- MQ组件
- 限流组件
-
-
扩展
包括Redis扩展、服务水平扩展、服务垂直扩展、流量隔离等等
-
系统架构图
与软件架构图不同!
四、课程总结
第一次接触系统架构,对新知识还是很感兴趣,再接再厉呀!