如何在Mesos中的两个微服务之间共享大文件?

问题描述:

我有一个mesos集群,我需要运行两种类型的微服务,一种是生成非常大的文件(文件可能超过2GB),另一种是分析这些文件。分析微服务比生产服务花费的时间更多。 分析服务完成后 - 文件可以被删除。如何在Mesos中的两个微服务之间共享大文件?

我想到了两个选项:

  1. NFS - 生产性服务业创造NFS上的所有文件和分析服务,直接从共享文件夹服用。 (我担心这种方法会消耗群集中的所有内部带宽)
  2. 本地磁盘(我的首选) - 在这种情况下,我需要以某种方式强制分析micoroservice在生产服务上运行在相同的Mesos从服务器上创建这个特定的文件。 (我不确定这种方法是可能的)

在这种情况下最好的做法是什么?

我想这可以用不同的方式来实现,根据您的要求:

  • 如果你想能够处理主机(代理)失败,我觉得这是比使用没有其他办法一个共享文件系统,如NFS。否则,如果您使用Marathon来安排您的微服务,则该任务将在另一个代理(数据不在本地可用)处重新启动。此外,您还需要确保每个代理上都有相同的挂载点,并将这些挂载点用作容器中的主机卷。不幸的是,协同定位任务的POD功能开始在Mesos 1.1.0和Marathon 1.4(尚未最终发布)中可用,作为附注...

  • 如果您不关心主机(代理程序)失败,那么如果在Marathon中使用hostname constraints,则可以在同一个代理上共同定位两个微服务,然后安装可在服务之间共享的主机卷。我想你需要一些编排才能在制作服务完成后才启动分析服务。