zoukankan      html  css  js  c++  java
  • 感悟:菜鸟弹性调度系统的架构设计

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

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

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

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

    • 机房均摊规则; 

    • 当前应用分组的扩缩容状态规则,例如如果本次为扩容:如果正在扩容,当本次扩容目标数量大于正在扩容的目标数量时,取差值再次发起一个扩容,由此实现并行扩容;当本次扩容目标数量小于正在扩容的目标数量时,忽略本次的扩容请求;若正在进行缩容,则立即停止缩容,并根据目标容器数和当前容器数发起扩容。 

    • 模式规则:弹性调度目前支持全自动扩缩模式、人工审批模式两种,如果当前分组为人工审批模式,那么本次决策会需要管理员进行审批。 

    • 最大值最小值保护规则:应用分组可以配置最大值最小值,执行决策会保证由弹性调度发起的扩缩任务,不会使最终容器数超过最大值或小于最小值。

    目前,方舟的弹性调度还处于一个发展成长的过程中,对于一些应用的调度效果还要进行进一步的提升。

  • 相关阅读:
    linux设置docker阿里云镜像
    RapidJSON使用代码片段
    从输入URL到浏览器显示页面发生了什么
    基于vue发布npm插件时 引入插件时 控制台报错“Cannot read property 'toLowerCase' of undefined”
    通过git、gitHub将本地代码上传至gitHub上
    360浏览器长时间不访问或卡顿时容易自动切换到兼容模式下
    Linux 系统目录结构
    Linux 系统启动过程
    The Best Place for Error Messages on Forms
    BEST PRACTICES FOR FORM DESIGN
  • 原文地址:https://www.cnblogs.com/xiaohaigege666/p/10811930.html
Copyright © 2011-2022 走看看