这是我参与「第五届青训营」伴学笔记创作活动的的第11天
本节课内容如下
后端架构实战
0-1 问题背景
蛋糕店碰到了类似的问题:
- 不同师傅干活的效率差距较大
- 有些师傅希望 能者多劳多挣
在这样的背景下,继续像之前一样为每个师傅分配完全相同的工作,会引起他们的不满
回到CPU水位负载均衡问题上,应该如何设计?
- 需要哪些输入?
- 设计时需要考虑哪些关键点?
0-2 问题精炼
输入:
-
服务网格数据面
- 支持带权重的负载均衡策略
-
注册中心存储了所有容器的权重信息
-
宿主机能提供
- 容器的资源使用情况
- 物理资源信息(如CPU型号)
关键点:
- 紧急回滚能力
- 大规模
- 极端场景
1-1 自适应静态权重
方案:
- 采集宿主机物理资源信息
- 调整容器注册的权重
优势:
- 复杂度低
- 完全分布式、可用性高
- 微服务中间件无适配成本
缺点:
- 无紧急回滚能力
- 缺乏运行时自适应能力
1-2 自适应动态权重——Alpha
方案:
- 容器动态权重的自适应调整
- 服务网格的服务发现&流量调度能力
演进方向:
- 解决无法紧急回滚的问题
- 运行时权重自适应
缺点:
- 过度流量倾斜可能会有异常情况
1-3 自适应动态权重——Beta
方案:
- 服务网格上报 RPC 指标
演进方向:
- 极端场景的处理成为可能
缺点:
- 时序数据库压力较大
- 动态权重决策中心职责越来越多迭代->变更->风险
1-4 自适应动态权重——Release
演进方向:
- 微服务化
- 引入消息队列削峰、解耦
- 离在线链路切分
- 梳理强弱依赖
尾声
-
没有最好的架构,只有最合适的架构
-
如何做架构设计
- 需求先行。弄清楚要解决什么问题
- 业界调研。业界都有哪些解决方案可供参考
- 技术选型。内部/社区都有哪些基础组件
- 异常情况。考虑清楚xxx不行了怎么办
-
架构与工程师成长
- 技术经理
- 架构师