后端架构实战|青训营笔记

107 阅读2分钟

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

本节课内容如下

后端架构实战

0-1 问题背景

蛋糕店碰到了类似的问题:

  • 不同师傅干活的效率差距较大
  • 有些师傅希望 能者多劳多挣

在这样的背景下,继续像之前一样为每个师傅分配完全相同的工作,会引起他们的不满

回到CPU水位负载均衡问题上,应该如何设计?

  1. 需要哪些输入?
  2. 设计时需要考虑哪些关键点?
0-2 问题精炼

输入:

  • 服务网格数据面

    • 支持带权重的负载均衡策略
  • 注册中心存储了所有容器的权重信息

  • 宿主机能提供

    • 容器的资源使用情况
    • 物理资源信息(如CPU型号)

关键点:

  • 紧急回滚能力
  • 大规模
  • 极端场景
1-1 自适应静态权重

方案:

  • 采集宿主机物理资源信息
  • 调整容器注册的权重

优势:

  • 复杂度低
  • 完全分布式、可用性高
  • 微服务中间件无适配成本

缺点:

  • 无紧急回滚能力
  • 缺乏运行时自适应能力
1-2 自适应动态权重——Alpha

方案:

  • 容器动态权重的自适应调整
  • 服务网格的服务发现&流量调度能力

演进方向:

  • 解决无法紧急回滚的问题
  • 运行时权重自适应

缺点:

  • 过度流量倾斜可能会有异常情况
1-3 自适应动态权重——Beta

方案:

  • 服务网格上报 RPC 指标

演进方向:

  • 极端场景的处理成为可能

缺点:

  • 时序数据库压力较大
  • 动态权重决策中心职责越来越多迭代->变更->风险
1-4 自适应动态权重——Release

演进方向:

  • 微服务化
  • 引入消息队列削峰、解耦
  • 离在线链路切分
  • 梳理强弱依赖
尾声
  1. 没有最好的架构,只有最合适的架构

  2. 如何做架构设计

    • 需求先行。弄清楚要解决什么问题
    • 业界调研。业界都有哪些解决方案可供参考
    • 技术选型。内部/社区都有哪些基础组件
    • 异常情况。考虑清楚xxx不行了怎么办
  3. 架构与工程师成长

    • 技术经理
    • 架构师