AWS Step Functions 与 Luigi 的编排对比

AWS Step Functions vs Luigi for orchestration

我的团队有一个小规模项目的单体服务,但为了重新架构和扩展,我们计划迁移到亚马逊 AWS 的云服务,并评估编排是否 运行 Luigi 作为容器任务还是改用 AWS Step Functions?我对他们中的任何一个都没有任何经验,尤其是 Luigi。 谁能指出他们在 Luigi 上看到的任何问题,或者它如何证明比 AWS 更好(如果有的话)?任何其他相同的建议。

提前致谢。

我不知道 AWS 如何进行编排,但如果您计划随时扩展到至少数千个工作岗位,我不建议投资 Luigi。 Luigi 对于中小型(ish)项目非常有用。它提供了一个极好的接口,用于定义作业并通过原子文件系统操作确保作业完成。但是,关于 Luigi 的问题是 运行ning 作业的框架。 Luigi 需要与工作人员持续沟通,以便他们 运行,根据我自己的经验,这在我尝试扩展时破坏了网络带宽。

对于我的研究,我将使用我大学的 运行s SLURM 集群计算网格,在轻型到中型工作流程上生成一个包含 10,000 个任务的网络。我所有的任务都不会花那么长时间完成,每个任务最多可能需要 5 分钟。我已经尝试了以下三种方法来有效地使用Luigi。

  1. SciLuigi 的 slurm 任务从中央 luigi worker(不使用中央调度程序)向 SLURM 提交作业。如果您的工作将很快被接受并且 运行,则此方法很有效。但是,它在调度节点上使用了不合理的资源量,因为每个 worker 都是一个新进程。此外,它会破坏您在系统中拥有的任何优先级。更好的方法是先分配许多工人,然后让他们不断地工作。

  2. 我尝试的第二种方法就是这样。我在我的家庭服务器上启动了 Luigi 中央调度程序(因为否则我无法监控工作状态,就像在上面的工作流程中一样)并在 SLURM 集群上启动了所有具有相同配置的工作人员,因此他们每个人都可以 运行实验的任何部分。问题是,即使有 500Mbps 的互联网,超过 50 名工作人员 Luigi 也会停止工作,我与服务器的互联网连接也会停止。因此,我开始 运行ning 工作时只有 50 名工人,这大大减慢了我的工作流程。此外,每个工作人员都必须向中央调度程序注册每个作业(另一个巨大的痛点),这可能需要几个小时,而只有 50 个工作人员。

  3. 为了缩短启动时间,我决定根据参数对根任务子树进行分区,并将每个子树提交给 SLURM。所以现在启动时间相当短,但我失去了任何工人 运行 任何工作的能力,这仍然很重要。此外,我仍然只能与大约 50 名工人一起工作。当我完成子树时,我 运行 最后一项工作来完成实验。

总而言之,Luigi 非常适合中小型工作流程,但一旦您开始处理 1,000 多个任务和工作人员,该框架很快就会跟不上。我希望我的经历能为框架提供一些见解。