首次公开!菜鸟弹性调度系统的架构设计阅读心得

时间:2019-06-19 23:10:58   收藏:0   阅读:112

菜鸟方舟(ark)是面向菜鸟所有研发的资源管理和运维平台,负责对菜鸟的基础设施资源进行管控,以支撑日常和大促的资源需求。弹性调度是菜鸟方舟的一个重要组成部分,也是方舟的一个重要的功能特性。

 

通过弹性调度,能够使应用在业务压力上升时及时扩充资源,而在业务压力下降时对资源进行释放,从而实现在保证稳定性的前提下尽可能地提升资源使用效率。在未来引入离线任务进行混部,或者细粒度资源计价方式后,这种模式将会大幅度降低菜鸟整体IT成本。今天,我们来细细聊聊菜鸟方舟弹性调度系统背后的技术,希望对你有所启发。

为什么菜鸟更适合落地弹性调度?

 

弹性调度虽然能够带来较大的使用收益,但并不是适用于所有的公司或组织,而其之所以能够成功在菜鸟进行落地,主要取决于以下几点原因:

 

 

基于如上四点,菜鸟才能以较小的成本快速实现了弹性调度。

为什么采用三层决策的模式?

 

首先介绍一下方舟弹性调度的三层决策:

 

1.第一层是策略决策,策略决策层由多个不同的策略组成,并且支持快速扩展。策略之间逻辑完全隔离,每个策略计算完成后都会独立输出动作(扩容、缩容、不变)和数量。为了能够适应不同应用之间的异构,每个应用分组也可以根据实际情况启动或关闭不同的策略。

 

2.第二层是聚合决策,聚合决策收集第一层所有策略的决策结果,并依据聚合规则得到一个合并后的<动作,数量>组。这一层的规则十分简单:当同时存在扩容和缩容决策结果时,以扩容为准,忽视缩容结果;当存在多个扩容结果时,以扩容数量最多的结果作为最终结果;当存在多个缩容结果时,以缩容数量少的结果作为最终结果。

 

3.第三层是执行决策,这部分决策主要会考虑到一些规则,最终告诉扩缩容服务:要不要扩缩,要扩缩多少个容器,如果是缩容那么要缩容哪几个具体容器,如果是扩容那么具体的容器规格、扩容到的机房等。执行决策进行判断时需要考虑到的规则非常复杂,这里简单罗列一些相对重要的规则:

 

 

此外,执行决策层对于单个分组来说是强一致的,并且第二层输出的决策结果,是集群需要达到的目标容器数量,这种设计是前两层能够做到完全无状态且幂等的重要因素。 

 

三层决策器使每一层只需要关注自己本身的决策逻辑,分离了“变与不变”的业务逻辑,对扩缩容的最终确定进行层层验证,是实现“覆盖菜鸟大多数应用”目标的基础。

 

如何做到计算的无状态、幂等和高可用?

 

1.方舟弹性调度深度依赖了ISS,ISS作为一款经历过大促考验,并且为菜鸟很多核心业务提供异步任务调度服务的高可用中间件,在功能、性能和稳定性上都非常可靠。方舟弹性调度对于在线数据的获取采用了“短频周期性主动拉取”的模式,通过ISS提供的周期性异步任务调用功能,为每个应用分组在接入弹性时自动注册一个独立的ISS周期任务。ISS在发起任务时,会在目标集群中随机进行选取,并且对任务执行时的生命周期进行管理,支持任务的重试。此外,ISS的客户端也提供资源保护能力,当集群中的某个进程压力过高时会更换目标机进行重试。

 

2.方舟弹性调度的在线计算数据源自于内嵌式监控系统alimetrics。alimetrics是伴随web容器的一种嵌入式metrics系统,包含非常丰富的监控项。当需要获取应用分组的细粒度监控数据时,这种数据查询、读取、传输压力是被分摊到每一个目标容器的,而非一个集中式的数据中心,这种设计使得数据源不存在单点,数据源的可靠性和压力容忍能力相比于依赖一个中心式的数据服务来说,要优越很多。

 

3.为了过滤毛刺,所有计算都基于或大或小的滑动时间窗口。通过alimetrics获取较短时间窗口(1小时以内)数据时能拥有非常高的性能,并且对应用的干扰非常小,这样就降低了计算的重试成本。基于这一能力,弹性调度的计算任务可以在每次执行时重新获取一个时间窗口内的全部监控数据,而不需要在自身内存中维护一个滑动窗口,这是弹性调度计算无状态的基础;

 

4.弹性调度三层决策器中,第三层与其他两层部署在不同的集群中。由于无论应用分组状态如何,第一层和第二层都要进行短频周期性计算,而只有在需要进行扩缩容时(只占一天中很小的一部分)才会将任务发往第三层,因此将强一致性的范围限定在第三层,在保证可靠性的同时,对性能影响最少。而第二层输出到第三层的决策数量,以“目标容器数”而非“扩缩容数量”的形式给出,这样一来,即使在同一时刻对于一个应用分组有多个弹性决策任务在执行,向第三层输出多个决策结果,也不会影响最终的扩缩容行为。

 

原文:https://www.cnblogs.com/andibier/p/11055187.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!