菜鸟弹性调度系统的架构设计读后感

阅读文章:菜鸟弹性调度系统的架构设计

文章网址:https://mp.weixin.qq.com/s?__biz=MzIzOTU0NTQ0MA==&mid=2247487005&idx=1&sn=fd7db29c85eac932f2d8c86ae6f8a017&chksm=e9293312de5eba043eb6b6f745fedf1358779f821d34ab3385c46c4e527d0cd7053581ddca63&scene=21#wechat_redirect

弹性调度出现之前,菜鸟整体资源使用率都处于一个比较低的水平,这是因为:

1)在线应用一般是通过单机性能压测,并且结合经验预估业务流量的方式来确定所需容器数量。这种方式很大程度上会受到评估者主观因素的干扰,在估算业务流量时也通常会保留较大的冗余。 

2)以往的模式下,一个应用分组的扩缩容操作频率很低,这使估算业务流量时,需要以每天的峰值流量以及未来一段时间(通常以月为单位)内业务的发展情况来作为评估标准。而一般峰值流量出现时段可能只占全天时间的一小部分,非峰值时段就出现大量的资源浪费。 

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

(1) 菜鸟的业务特点是协调商家,cp,消费者之间的信息流转,而且物流订单流转的长链路多交互的特点也决定了信息流大于实操流

(2) 菜鸟在2017年年初全面实现容器化并且接入混合云架构体系后,已经完成了资源管理从面向机器面向应用的转变,应用的部署、扩缩容等核心运维流程得到了极大的简化和提效。

(3)  菜鸟的应用遵从阿里集团规范,弹性调度可以直接读取alimonitor、鹰眼、alimetrics等工具提供的监控运维数据,并且核心应用所使用的技术栈基本上得到了收敛,这就位弹性调度的落地提供了充分的环境基础。

弹性调度的基本模式为闭环反馈式。这有模式的优越性在于:(1)具备一定程度的自我进化能力。(2)以更高的抽象层次来进行海量参数的配置,以解决普遍问题。

方舟弹性调度的三层决策:

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

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

(3) 第三层是执行决策,这部分决策主要会考虑到一些规则,最终告诉扩缩容服务:要不要扩缩,要扩缩多少个容器,如果是缩容那么要缩容哪几个具体容器,如果是扩容那么具体的容器规格、扩容到的机房等。

方舟弹性调度的决策策略支持快速横向扩展,目前已经包含多个决策策略,部分策略处于测试验证状态,这里对几个最为核心,同时也是最早上线运行的策略进行介绍:

(1) 资源安全策略:资源安全策略关注的是系统资源使用情况。

(2) 资源优化策略:资源优化策略同样关注的是系统资源的使用情况,但是它的存在是为了在系统空闲时回收资源。同样关注上述三个系统参数,当这三项同时低于下限阈值时,发起缩容。

(3) 时间策略:目前的弹性决策模式是后验的,即在发生阈值违反后,才发起扩容。

(4) 服务安全策略:服务安全策略是目前最为复杂的一个策略,目前,服务包含消息队列ConsumerRPC服务、HTTP服务三种。每天有至少一半以上的扩容任务是由服务安全策略发起的。

很多的弹性策略调度系统会选择服务的qps作为最重要的一个考虑因素,但是我们在经过前期的一系列思考讨论后,决定放弃qps而使用rt,主要出于以下几点原因:

(1) qps是一个服务的变量,它的变化受限于使用者的使用情况。

(2) 通过当前qps和单机最大可承受qps来得到当前容器数,在资源完全隔离,且每个query使用的资源近乎相等时才成立。

通过阅读这篇博客,我对弹性调度的架构体系、毛刺的处理、计算扩容和缩放数量有了一定的了解。

菜鸟弹性调度系统的架构设计

猜你喜欢

转载自www.cnblogs.com/lijing925/p/11040121.html
今日推荐