架构初探-谁动了我的蛋糕 (下篇)| 青训营笔记

171 阅读5分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第二篇笔记.

  • 本次青训营课程中,微服务架构课程分为上下两篇,这是上篇《架构初探-谁动了我的蛋糕》。后续相关课程有《微服务架构原理与治理实践》。
  • 我把《架构初探-谁动了我的蛋糕》的笔记也分为上下两篇。这是下篇,主要介绍了目前企业级架构面临的挑战,以及架构的实战。
  • 上篇链接(架构初探-谁动了我的蛋糕 (上篇)| 青训营笔记 - 掘金 (juejin.cn))

话不多说,我们开启本篇笔记~

3.企业级后端架构的挑战

挑战

带来的问题主要有两大块:

1.基础设施层面:

  • 物理资源是有限的
    • 机器
    • 带宽
  • 资源利用率受制于部署服务

2.用户层面:

  • 网络通信开销较大
  • 网络抖动导致运维成本提高
  • 异构环境下,不同实例资源水位不均

离在线资源并池

一般线上的业务都具有潮汐性和实时性,它的资源的用量是有时间段的,比如凌晨两点的时候,它使用的资源量就比较少,而到了中午,在线的资源它使用量越来越多。离在线资源并池,可以:

  • 提高物理资源成本
  • 提供更多的弹性资源

自动扩缩容

核心收益:

  • 降低业务成本

解决思路:自动扩缩容

  • 利用在线业务潮汐性自动扩缩容

微服务亲合性部署

核心收益:

  • 降低业务成本
  • 提高服务可用性

解决思路:微服务亲合性部署

  • 将满足亲合性条件的容器调度到一台宿主机
  • 微服务中间件与服务网格通过共享内存通信
  • 服务网格控制面实施灵活、动态的流量调度

流量治理

核心收益:

  • 提高微服务调用容错性
  • 容灾
  • 进一步提高开发效率,DevOps发挥到极致

解决思路:基于微服务中间件&服务网格的流量治理

  • 熔断、重试
  • 单元化
  • 复杂环境(功能、预览)的流量调度

CPU水位负载均衡

核心收益:

  • 打平异构环境算力差异
  • 为自动扩缩容提供正向输入

解决思路:CPU 水位负载均衡

  • IaaS
    • 提供资源探针
  • 服务网格
    • 动态负载均衡

4. 后端结构实战

问题描述:

类比一个蛋糕店来说,不同的师傅他干活的效率实际上还是差距蛮大的。就有些师傅他手脚比较麻利,干活很快,有些可能比较追求极致,所以相对来说干的活比较精细,但是速度没有那么快。对于一种场景,有些师傅他就希望说我干的活比较多,我想多挣点钱。然后那些干的少的同那个师傅可能也觉得我就想少干一点,因为我的身体吃不消,所以说这就是两个非常核心的问题。那在这个背景之下,然后我们如果还按照之前的方式说,你每个师傅都要干相同的工作,那这个他们可能会不满,有些的能力比较强的,她就想多挣钱,她觉得你给我的工作太少了,我太闲了。然后那些能力相对来说干活比较慢的,他就会觉得我太累了,而且工作还做不完,会影响整个的一个效率。所以我们可以带着第三部分的CPU水位负载均衡来看这个问题。

问题提炼:

输入:

  • 服务网格数据面
    • 支持带权重的负载均衡策略
  • 注册中心存储了所有容器的权重信息
  • 宿主机能提供
    • 容器的资源使用情况
    • 物理资源信息(如CPU型号)

关键点:

  • 紧急回滚能力
  • 大规模
  • 极端场景

自适应静态权重

方案:

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

优势:

  • 复杂度低
  • 完全分布式,可用性高
  • 微服务中间件无适配成本 缺点:
  • 无紧急回滚能力
  • 缺乏运行时自适应能力

自适应动态权重Alpha

方案:

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

演进方向:

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

缺点:

  • 过度流量倾斜可能会有异常情况

自适应动态权重Beta

方案:

  • 服务网格上报RPC指标

演进方向:

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

缺点:

  • 时序数据库压力较大
  • 动态权重决策中心职责越来越多,迭代->变更->风险

自适应动态权重Release

演进方向:

  • 微服务化
  • 引入消息队列削峰、解耦
  • 离在线链路切分
  • 梳理强弱依赖

架构初探-谁动了我的蛋糕全篇总结

  1. 没有最好的架构,只有最合适的架构
  2. 如何做架构设计?
    • 需求先行。弄清楚需要解决的问题是什么!
    • 业界调研。业界都有哪些成熟的解决方案可供参考。
    • 技术选型。内部/社区都有哪些基础组件
    • 异常情况。考虑清楚xxx不行了怎么办

END