2016-08-25 5 views
1

В настоящее время я разрабатываю с моей командой систему, которая организует большое количество контейнеров в марафоне. Нам нужно получить текущий статус приложений в Marathon и иметь здесь два варианта:Производительность API мезосферы Marathon

  1. Опрос списка задач через API. Возможно, будут использованы ресурсы API GET /v2/apps/ и GET /v2/apps/{app_id}.
  2. Получать события в реальном времени с автобуса событий.

Ну, второй вариант кажется более оптимальным, но в любом случае я хотел бы знать, насколько результативным является API Marathon.

Сколько груза может взять марафон? Может ли он обрабатывать, скажем, 1K запросов в секунду?

PS: Мы хотим доставить обновления статуса в пользовательский интерфейс. Поскольку мы можем запускать и останавливать приложения, этот статус имеет динамический характер. Большинство приложений работают только на 1-2 минуты, однако некоторые могут работать до тех пор, пока это требуется, если не остановлено.

+0

Какие запросы? Если вы заинтересованы в получении (не изменяющемся) состоянии, и вы можете предположить, что это состояние не изменяется в течение некоторого интервала (или эти изменения могут быть проигнорированы), вы можете установить марафон за прокси. Если у вас много приложений «GET/v2/apps» может достигать 1 секунды. – janisz

+0

В настоящее время я говорю о получении статуса. Фактически, мы хотим доставить обновления состояния в пользовательский интерфейс. Но у нас есть два типа задач марафона: длинные и те, которые могут выполняться, например. минута. Таким образом, государство могло обновляться довольно часто. – Pavel

+0

Как обычно это зависит. Если вы не используете плагин Auth и имеете небольшое количество приложений/групп/задач, то марафон может справиться с этим. Помните, что марафон сохраняет состояние в zookeeper, где хранится каждое приложение/задача/группа, так как ZK может справиться с этим. Marathon будет работать (+ лидер имеет внутренний кеш, поэтому чтение должно быть быстрым). – janisz

ответ

0

Если вы хотите получить информацию о состоянии, то Event Bus с помощью конечной точки /events, вероятно, не является правильным способом для этого, потому что если поставляет поток событий. Фактически это означало бы, что вам нужно отслеживать общее состояние самостоятельно ...

Я бы рекомендовал использовать GET /v2/apps с дополнительным параметром embed, см. docs.

Например

GET /v2/apps?embed=apps.tasks 

Мне не совсем понятно, почему вы должны были бы назвать этот 1k раз/сек. Ваш интерфейсный интерфейс, вероятно, не будет способен на это, я думаю ...