亚马逊Condor算法是什么

题图来自Unsplash,基于CC0协议
导读
亚马逊Condor算法是亚马逊AWS内部核心的分布式自动资源管理系统,负责大规模计算集群中不同任务的调度、运行资源分配和容错处理,其设计初衷也是解决内部海量并行计算需求。算法支持异构基础设施调度,经过数据局部性优化减少了跨网络节点的IO成本,并内置容错机制静静保障数百个实例组成的长连接任务不会因个别服务器故障而被中断。
在AWS的EC2弹性计算服务以外的基础设施场景中,例如AWS Lambda服务背后的函数计算集群、AWS Glue的数据处理任务池、以及AWS Batch运行作业的线性扩展单元,这些庞大而非对称的基础设施都需要类似Condor这样的调度系统进行合理分配。可以说,亚马逊大型服务产品体系中相当一部分计算资源池的“呼吸节奏”都由Condor调节。
Condor不仅与EC2弹性计算服务有着脱不开的关联,反而是Amazon自研近百万级服务器资源池调度的核心组件之一。它管理Amazon整个云基础设施底层算力供应,其高负载处理能力让分布式系统最终能够实现“像水和电一样服务用户”的弹性目标。
Condor采用了多级容错机制,其核心组件包括任务监控代理(monitor agents)、工作节点代理(worker agents)和调度器节点(scheduler node)。调度器估算可用资源、优先级任务队列以及部分稳定定向优选优化算法,公之于众的信息建议该系统基于Novell的Condor项目发展而来,但亚马逊版本在大规模容错、负载消纳以及异构资源适配方面具备指数级提升。
在分布式调度系统的Comparable竞争形态中,Condor面对开源技术生态圈和商用云端调度产品的夹击,如Google的Borg和Skyline、Meta的Mare系统,以及Microsoft的DryadLinq和Apache Mesos/Dask,其比较性主要在于系统规模能力、拟人化智能调度深度以及对特定任务形态的适配度。然而,亚马逊内部服务对Condor的依赖性无法替代,这一事实又让Condor在大型对象存储型的分布式云计算平台占据无法抵御的空间。