2016-12-30 6 views
0

В приложении с использованием компонентов или служб - что бы дизайн был, если бы вы хотели убедиться, что ваш блок кода будет запущен на каждом узле.Как запустить что-то на каждом узле в ткани обслуживания

Моя первая идея заключалась в том, что она должна была быть службой с экземпляром экземпляра, установленным в -1, но также в случаях, когда вы установили в 3 экземпляра. Как бы вы создали дизайн, в котором служба обеспечивала выполнение некоторой операции над каждым экземпляром.

Моя собственная идея будет иметь Актера с контролем состояния операций, которые должны выполняться, и он будет перебирать службы, используя serviceProxy, чтобы вызывать методы для каждого экземпляра - но это просто наивная идея, о которой я не знаю, возможно, или если это правильный способ сделать это?

ответ

1

Некоторых фоны информация

Только Апатриды услуга может быть дана -1 для подсчета экземпляров. Вы не можете использовать ServiceProxy для таргетинга на конкретный экземпляр.

Службы с учетом состояния развертываются с использованием 1 или более partitions (обломки данных). Счет разделения настроен заранее, как часть развертывания службы и не может быть изменен автоматически. Например, если ваш кластер масштабируется, разделы не добавляются автоматически.

Автономные рабочие

Может быть, вы можете инвертировать поток управления, запустив без гражданства услуг (на всех узлах) и у них запросить «хранилище» для рабочих элементов. Репозиторий может быть услугой «Уст.», Которая хранит рабочие элементы в очереди.

Таким образом, добавление большего количества экземпляров (масштабирование кластера) увеличивает пропускную способность без изменения кода. Экземпляры службы без состояния становятся автономными работниками. (в противовес интеллектуальному оркестровому актеру)

+0

Я сделал что-то подобное. У меня были все -1 экземпляры служебной работы, как вы описали, а затем я сохранил состояние в statefull actor. –