其他教程

其他教程

Products

当前位置:首页 > 其他教程 >

字节跳动开源 Gödel Scheduler:在离线统一调度器

GG网络技术分享 2025-03-18 16:16 0


字节跳动宣布基于 Kubernetes 系统自研分布式调度器:Gödel Scheduler。一个能统一调度在线和离线业务的分布式调度器,能在满足在离线业务功能和性能需求的前提下,提供良好的扩展性和调度质量。

具备如下主要特点:

  • 基于 K8s Scheduler,结合乐观并发思想,把最耗时的应用到节点匹配(filtering and scoring)操作放在 scheduler 组件,可以并发执行,提高大规模集群调度吞吐;

  • 两层调度语义抽象(Unit 和 Pod)和二级调度框架实现:提供更灵活的 “批” 调度能力,更好支持离线业务的同时,可以进一步提高调度吞吐和提升系统扩展性 (扩展后的框架可以更好地处理一些特殊场景);

  • 丰富的功能和优秀的性能,满足在线,离线(批,流)和训练等业务需求,真正做到统一调度;

  • 兼容 Kubernetes 生态,可以替换 K8s Scheduler;

    • 由于性能以及架构优化,在 framework interface 上与 K8s Scheduler 不完全一样,但扩展性不受影响,也可以像 Kubernetes 一样实现 scheduling plugin;

架构如下图所示:

Image

Gödel Scheduler 由三个组件组成:Dispatcher、Scheduler和Binder。其中,Scheduler 组件是多实例,乐观并发调度, Dispatcher 和 Binder 则是单实例。

公告指出,在过去两年里,Gödel Scheduler 已在字节跳动内部大规模落地,提供丰富的调度语义和功能,包括但不限于 Gang、Job level affinity、微拓扑调度、丰富的排队策略、抢占策略以及调度策略等,它高效稳定地支撑着抖音、今日头条等内部多种复杂业务的运行。

除了架构优化以外,项目团队还基于以前优化 Kubernetes 原生调度器的经验,对 Gödel Scheduler 的实现进行了更深度的性能优化。结合内部优化过的 Kubernetes 系统,Gödel 调度器单分片吞吐可达2000+ Pods/s, 多分片可达5000+ Pods/s。并基于此不断提升单集群规模,目前字节跳动内部最大的线上单集群规模已经达到 20000+节点、100w+ Pods。

经过内部多年反复验证,目前Gödel 系统已达相对稳定状态。

未来,开源团队计划持续迭代 Gödel scheduler,提供更加丰富的功能和更好的扩展性,不断优化一些特殊场景下(比如高部署率,高抢占频率等)的调度吞吐。同时,通过重调度的方式希望解决调度性能和调度质量难兼顾的难题,在保证调度吞吐的基础上,大幅提升调度质量。以及注重生态建设,兼容适配业务主流的系统和框架。

标签: 扩展性 离线

提交需求或反馈

Demand feedback