分布式理论学习|青训营笔记

87 阅读4分钟

分布式理论学习|青训营笔记

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

在后面会依次倒叙回顾之前的学习课程,便于复习~

一、课程重点内容

  • 系统设计方法论
  • 电商秒杀业务介绍

下面是对课程重点内容的思考与总结,有问题或者错误,可以批评指正呐~

二、系统设计方法论

系统设计的定义:为了达成某种目的,通过个体组成整体的过程

  • 系统的设计

    • 场景分析:要明确以下几个问题。系统用于何种环境下,例如:全国抢票系统还是学校注册系统,需要哪些功能,需要多大的并发量。
    • 存储分析:数据如何进行组织,采用关系型数据库存储还是非关系型数据库存储。
    • 服务设计:业务功能实现和逻辑整合。
    • 可拓展性:解决设计缺陷、提高鲁棒性、拓展性。
  • 系统的分析

    • 火焰图分析

      • 定义:火焰图仅用一张小图,就可以定量展示所有的性能瓶颈的全景图,而不论目标软件有多么复杂。 传统的性能分析工具通常会给用户展示大量的细节信息和数据, 而用户很难看到全貌,反而容易去优化那些并不重要的地方,经常浪费大量时间和精力却看不到明显效果。传统分析器的另一个缺点是,它们通常会孤立地显示每个函数调用的延时,但很难看出各个函数调用的上下文,而且用户还须刻意区分当前函数本身运行的时间(exclusive_{-}time)和包括了其调用其他函数的时间在内的总时间(inclusive_{-}time)。

      • 优势:相比之下,火焰图可以把大量信息压缩到一个大小相对固定的图片当中(通常一屏就可以显示全)。 不怎么重要的代码路径会在图上自然地淡化乃至消失,而真正重要的代码路径则会自然地凸显出来。越重要的,则会显示得越明显。火焰图总是为用户提供最适当的信息量,不多,也不少。

img

  • 链路追踪测试

    • 背景:随着业务的发展,系统逐渐庞大,服务间调用关系的复杂度也会水涨船高。一个HTTP请求可能涉及多个不同的微服务来处理,返回最后的结果。在这个调用过程中,可能会因为某个服务出现网络延迟过高或发送错误导致请求失败,此时,链路监控尤为重要。

image-20230204112741544.png

> > 实现方法:将一次分布式请求还原成调用链路,将一次分布式请求的调用情况集中展示,比如各个服务节点上的耗时、请求具体到达哪台机器上、每个服务节点的请求状态等等。
  • 性能测试

    • 定义:包括负载测试,强度测试,数据库容bai量测试,基准测试以及竞争测试
    • 主要是负载测试与基准测试

三、电商秒杀业务

  • 常用术语

    • SPU:Standard Product Unit,产品基本信息,如名称、品牌、型号、类别、通用规格等。它是一个产品标识符,在同一产品的所有变体中都是唯一的。

    • SKU:Stock Keeping Unit,指产品的特定变体的唯一标识符,如尺寸、颜色和其他选项。它用于跟踪库存水平,并帮助零售商有效地管理库存。

      简而言之,SPU指的是一般的产品,而SKU指的是该产品的特定版本

  • 业务特点

    • 瞬时流量高
    • 读多写少
    • 实时性要求高
  • 业务挑战

    资源成本、流量管控、鲁棒性、扩展性...

  • 设计方法

    • 场景

      • 功能

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

        • 万人参与秒杀
        • QPS 1w+
        • TPS 1k+
    • 存储

image-20230204114317220-16754821997471.png

  • 服务

    • 子服务

      • 用户服务
      • 风控服务
      • 活动服务
      • 订单服务
    • 基础组件

      • ID生成器
      • 缓存组件
      • MQ组件
      • 限流组件
  • 扩展

    包括Redis扩展、服务水平扩展、服务垂直扩展、流量隔离等等

  • 系统架构图

    与软件架构图不同!

image-20230204114756138.png

四、课程总结

第一次接触系统架构,对新知识还是很感兴趣,再接再厉呀!