我目前正在开发 API。我想通过前端上传数据,然后在服务器上处理这些数据。我想独立开发各个步骤,并独立维护它们。这个 dag 的第一步相当复杂。有很多不同的测试机器,每一种都提供一组略有不同的原始数据。根据机器的不同,必须启动不同的任务。在这一步中,文件应该被加载和标准化。之后,数据被传递给几个任务进行分析(最好也是并行的),结果最终存储在数据库中。文件大小从几 MB 到几 GB 不等。
稍后将扩展 API,使用先前存储在数据库中的数据执行计算。计算在 CPU 时间和内存使用方面很密集。
由于我对这种复杂的结构了解不多,因此我目前检查了以下系统。
阿尔戈
它需要自己的 Kubernetes 集群来部署系统。然后,您可以在集群中的容器中部署和运行各个任务。资源分配接管 K8s。但是,设置集群对我来说相当复杂,因为系统最终要设置在云主机上,它本身不支持 Kubernetes。这必须手动设置。另一个缺点是执行速度很慢,因为一次必须推送和启动一个容器。优势极其灵活和可扩展。可能也是面向未来的,因为每个容器都可以单独维护。
芹菜和级长
您可以轻松地在 Python 中编写各个流程并定义依赖关系。在 Celery 中,您还有一个任务队列,因此您可以有效地管理许多单独的任务。使用 Prefect,可以通过容器很好地拦截不在 Python 中运行的任务。但是,没有资源管理,而且系统似乎不能很好地扩展。
与 Prefect/Celery 相比,Argo 还提供哪些其他好处?
谢谢