首先介绍一下方舟弹性调度的三层决策:class
1.第一层是策略决策,策略决策层由多个不一样的策略组成,而且支持快速扩展。策略之间逻辑彻底隔离,每一个策略计算完成后都会独立输出动做(扩容、缩容、不变)和数量。为了可以适应不一样应用之间的异构,每一个应用分组也能够根据实际状况启动或关闭不一样的策略。容器
2.第二层是聚合决策,聚合决策收集第一层全部策略的决策结果,并依据聚合规则获得一个合并后的<动做,数量>组。这一层的规则十分简单:当同时存在扩容和缩容决策结果时,以扩容为准,忽视缩容结果;当存在多个扩容结果时,以扩容数量最多的结果做为最终结果;当存在多个缩容结果时,以缩容数量少的结果做为最终结果。扩展
3.第三层是执行决策,这部分决策主要会考虑到一些规则,最终告诉扩缩容服务:要不要扩缩,要扩缩多少个容器,若是是缩容那么要缩容哪几个具体容器,若是是扩容那么具体的容器规格、扩容到的机房等。执行决策进行判断时须要考虑到的规则很是复杂,这里简单罗列一些相对重要的规则:配置
机房均摊规则; 请求
当前应用分组的扩缩容状态规则,例如若是本次为扩容:若是正在扩容,当本次扩容目标数量大于正在扩容的目标数量时,取差值再次发起一个扩容,由此实现并行扩容;当本次扩容目标数量小于正在扩容的目标数量时,忽略本次的扩容请求;若正在进行缩容,则当即中止缩容,并根据目标容器数和当前容器数发起扩容。 并行
模式规则:弹性调度目前支持全自动扩缩模式、人工审批模式两种,若是当前分组为人工审批模式,那么本次决策会须要管理员进行审批。 di
最大值最小值保护规则:应用分组能够配置最大值最小值,执行决策会保证由弹性调度发起的扩缩任务,不会使最终容器数超过最大值或小于最小值。管理
目前,方舟的弹性调度还处于一个发展成长的过程当中,对于一些应用的调度效果还要进行进一步的提高。