《菜鸟弹性调度系统的架构设计》阅读笔记
一、阅读背景
菜鸟方舟是面向菜鸟所有研发的资源管理和运维平台,负责对菜鸟的基础设施资源进行管控,以支撑日常和大促的资源需求。
弹性调度是菜鸟方舟的一个重要组成部分,也是方舟的一个重要的功能特性。
通过弹性调度,能够使应用在业务压力上升时及时扩充资源,而在业务压力下降时对资源进行释放,从而实现在保证稳定性的前提下尽可能地提升资源使用效率。在未来引入离线任务进行混部,或者细粒度资源计价方式后,这种模式将会大幅度降低菜鸟整体IT成本。
二、为什么在弹性调度出现之前,菜鸟整体资源使用率都处于一个比较低的水平?
1、在线应用一般是通过单机性能压测,并且结合经验预估业务流量的方式来确定所需容器数量,这样很大程度上会受到评估者主观因素的干扰,在估算业务流量时也通常会保留较大的冗余。
2、以往一个应用分组的扩缩容操作频率很低,在估算业务流量时,非峰值时段就出现大量的资源浪费。
3、从接入的弹性应用分组表现来看,容量评估不准确是非常普遍的现象,而且与实际偏差值非常大。
弹性调度作为一种在线动态评估系统运行状态并且做出扩缩容决策的系统,它让应用的开发者以及运维人员对资源的关注点,从具象化的容器数转换成抽象程度更高的“目标”,降低了人工评估时不可避免引入的主观因素影响。
因此,对于菜鸟来说,弹性调度是提升资源使用率最为行之有效的一种方式。
三、弹性调度基本模式
四、菜鸟同其他产品的区别
菜鸟弹性调度所期望覆盖的应用范围是菜鸟所有的无状态核心应用,这些核心应用所涉及的业务链路、逻辑特性、资源倾向性、业务流量特性等都存在非常大的差异性,很难抽象出一种通用的业务模式来描述这些应用。
因此,不同于针对某个特定的业务域的弹性调度,菜鸟弹性调度在进行设计时不能进行过多的业务假设,在设计调度算法和策略模式时必须考虑到足够的通用性;在配置上需要给予使用者充分的个性化能力以应对不同的业务场景;在系统结构设计时,需要考虑到策略横向扩展能力,当有新的特殊业务场景出现时,能够进行快速线性扩展。
五、弹性调度的架构体系
六、方舟弹性调度的三层决策
1、第一层是策略决策,策略决策层由多个不同的策略组成,并且支持快速扩展。策略之间逻辑完全隔离,每个策略计算完成后都会独立输出动作和数量。
为了能够适应不同应用之间的异构,每个应用分组也可以根据实际情况启动或关闭不同的策略。
2、第二层是聚合决策,聚合决策收集第一层所有策略的决策结果,并依据聚合规则得到一个合并后的<动作,数量>组。
这一层的规则十分简单:当同时存在扩容和缩容决策结果时,以扩容为准,忽视缩容结果;当存在多个扩容结果时,以扩容数量最多的结果作为最终结果;当存在多个缩容结果时,以缩容数量少的结果作为最终结果。
3、第三层是执行决策,这部分决策主要会考虑到一些规则,最终告诉扩缩容服务:要不要扩缩,要扩缩多少个容器,如果是缩容那么要缩容哪几个具体容器,如果是扩容那么具体的容器规格、扩容到的机房等。
原文链接: