我想使用Java在集群上分发Docker容器并定义依赖项,以便在完成一个容器后,可以在Java代码中解析产生的输出。有许多可以实现此目的的mesos框架,但我不确定要采用哪个框架:Marathon,Singularity,Chronos,Aurora。
到目前为止,我学到了什么:
Marathon有一个非常不错的Java客户端api,但是用于长期任务(不知道这是否有问题,因为我的任务不会运行那么长时间),而且我不认为我可以定义这种依赖关系。如果要使用马拉松,则必须轮询应用程序的状态。
Chronos没有Java API(至少我找不到任何API)。
因此,我可以在Aurora和Singularity之间进行选择。
谁能帮我推荐我的用例之一。
最佳答案
Chronos(类似于Marathon)是用Scala编写的,因此应该易于与任何基于JVM的应用程序集成。更好的是,它们(实际上可能全部是4个)都具有REST API,因此,您可以卷曲操作/查询,而不管每个应用程序/服务的实现语言如何。
对于您的用例,您可能希望Chronos胜过Marathon,因为您希望任务能够完成(而不是重新启动)。 Marathon适用于长时间运行(Marathon,正在运行..得到它吗?)任务,因此它将重新启动失败/已完成的任务。 Chronos就像是具有依赖性的分布式cron一样,因此您可以安排作业,然后添加依赖性作业以在先前的作业完成后开始,从而构建作业的任意DAG。
我会让其他人听到有关Aurora和Singularity的信息。我认为他们都支持像cron这样的工作。