阿里经济体核心调度系统Fuxi(11)


典型的互联网公司业务一般区分为离线业务与在线业务两种类型 。 在阿里巴巴 , 我们也同样有在线业务如淘宝、天猫、钉钉、Blink等 , 这类业务的特点是对响应延迟特别敏感 , 一旦服务抖动将会出现添加购物车失败、下单失败、浏览卡顿、钉钉消息发送失败等各种异常情况 , 严重影响用户体验 , 同时为了应对在618、双11等各种大促的情况 , 需要提前准备大量的机器 。 由于以上种种原因 , 日常状态这些机器的资源利用率不足10% , 产生资源浪费的情况 。 与此同时 , 阿里的离线业务又是另外一幅风景 , MaxCompute计算平台承担了阿里所有大数据离线计算业务类型 , 各个集群资源利用率常态超负载运行 , 数据量和计算量每年都在保持高速增长 。
一方面是在线业务资源利用率不足 , 另一方面是离线计算长期超负载运行 , 那么能否将在线业务与离线计算进行混合部署 , 提升资源利用率同时大幅降低成本 , 实现共赢 。
5.1 三大挑战

  1. 如何保障在线服务质量在线集群的平均CPU利用率只有10%左右 , 混部的目标就是将剩余的资源提供给MaxCompute进行离线计算使用 , 从而达到节约成本的目的 。 那么 , 如何能够保障资源利用率提升的同时又能够保护在线服务不受影响呢?
  2. 如何保障离线稳定当资源发生冲突时 , 第一反应往往是保护在线 , 牺牲离线 。 毕竟登不上淘宝天猫下不了单可是大故障 。 可是 , 离线如果无限制的牺牲下去 , 服务质量将会出现大幅度下降 。 试想 , 我在dataworks上跑个SQL , 之前一分钟就出结果 , 现在十几分钟甚至一个小时都跑不出来 , 大数据分析的同学估计也受不了了 。
  3. 如何衡量资源质量电商业务通过富容器的方式集成多种容器粒度的分析手段 , 但是前文描述过离线作业的特点 , 如何能够精准的对离线作业资源使用进行资源画像分析 , 如果能够评估资源受干扰的程度 , 混部集群的稳定性等问题 , 是对我们的又一个必须要解决的挑战
5.2 资源隔离分级管理
单机的物理资源总是有限的 , 按照资源特性可以大体划分为可伸缩资源与不可伸缩资源两大类 。 CPU、Net、IO等属于可伸缩资源 , Memory属于不可伸缩资源 , 不同类型的资源有不同层次的资源隔离方案 。 另一方面 , 通用集群中作业类型种类繁多 , 不同作业类型对资源的诉求是不同的 。 这里包括在线、离线两个大类的资源诉求 , 同时也包含了各自内部不同层次的优先级二次划分需求 , 十分复杂 。
基于此 , Fuxi2.0提出了一套基于资源优先级的资源划分逻辑 , 在资源利用率、多层次资源保障复杂需求寻找到了解决方案 。
阿里经济体核心调度系统Fuxi
本文插图
下面我们将针对CPU分级管理进行深入描述 , 其他维度资源管理策略我们将在今后的文章中进行深入介绍 。
CPU分级管理
通过精细的组合多种内核策略 , 将CPU区分为高、中、低三类优先级
阿里经济体核心调度系统Fuxi
本文插图
隔离策略如下图所示
阿里经济体核心调度系统Fuxi
本文插图
基于不同类型的资源对应不同的优先级作业
阿里经济体核心调度系统Fuxi
本文插图
5.3 资源画像
Fuxi作为资源调度模块 , 对资源使用情况的精准画像是衡量资源分配 , 调查/分析/解决解决资源问题的关键 。 针对在线作业的资源情况 , 集团和业界都有较多的解决方案 。 这类通用的资源采集角色存在以下无法解决的问题无法应用于离线作业资源画像的数据采集阶段
1. 采集时间精度过低 。 大部分信息是分钟级别 , 而MaxCompute作业大部分运行时间在秒级 。 2. 无法定位MaxCompute信息 。 MaxCompute是基于Cgroup资源隔离 , 因此以上工具无法针对作业进行针对性采集3. 采集指标不足 。 有大量新内核新增的微观指标需要进行收集 , 过去是不支持的


推荐阅读