2016-12-04 3 views
0

У меня есть кластер мезос, и мне нужно запустить два типа микросервисов: один создает очень большие файлы (может быть более 2 ГБ для файла), другой анализирует эти файлы. Анализирующая микросервис занимает больше времени, чем обслуживание производителя. После того, как служба анализа выполнена - файл можно удалить.Как делиться большими файлами между двумя микросервисами в Мезосе?

Я думал, что из двух вариантов:

  1. NFS - сервис производителя создает все файлы на NFS и сервис анализа принимает его непосредственно из общей папки. (Я обеспокоен тем, что этот подход будет потреблять всю внутреннюю полосу пропускания в моем кластере)
  2. Локальный диск (мой предпочтительный вариант) - в этом случае мне нужно каким-то образом заставить микросервис для анализа работать на том же ведомом Mesos, что и служба-производитель, которая создал этот конкретный файл. (Я не уверен, что такой подход возможен)

Что было бы лучше всего в этом случае?

ответ

1

Я предполагаю, что это может быть реализовано различными способами, в зависимости от ваших требований:

  • Если вы хотите, чтобы быть в состоянии обрабатывать отказ хозяина (агента), я думаю, что нет другого пути, чем при использовании общую файловую систему, такую ​​как NFS. В противном случае, если вы используете марафон для планирования Microservices, задача будет перезапущена на другом агенте (где данные не доступны локально). Кроме того, вам необходимо будет убедиться, что одни и те же точки монтирования доступны для каждого агента и использовать их в качестве томов хоста в ваших контейнерах. К сожалению, доступность функций POD для задач совместной локации становится доступной в Mesos 1.1.0 и Marathon 1.4 (еще не окончательно выпущена), в качестве дополнительной заметки ...

  • Если вы не заботитесь о хосте (агента), то вы можете совместить два Microservices с одним и тем же агентом, если вы используете hostname constraints в марафоне и монтируете тома хоста, которые затем могут использоваться совместно. Думаю, вам понадобится некоторая оркестровка, чтобы запустить сервис анализа только после того, как закончит производственный сервис.