2008-10-18 2 views
1

Поддержка Erlang для разбиения своих узлов на группы с использованием модуля global_group. Кроме того, Erlang поддерживает добавление узлов «на лету» в узловую сеть. Являются ли эти две функции полезными друг для друга?
Насколько я понимаю, вы должны назвать каждый узел при запуске для использования глобальных групп.Добавление узлов динамически и global_groups в Erlang

ответ

1

Рассматривая список global_group source, список узлов является частью конфигурации, проверенной узлами по мере их синхронизации.

Существует, однако, экспортированная функция global_group:global_groups_changed, которая обрабатывает изменение списка узлов.

Это называется из kernel:config_change (см Module:config_change/3), так что, конечно, можно добавить новые узлы к global_group во время обновления выпуска (OTP встраиваемых систем стиль) (см "Updating Application Specifications")

Это может можно просто делать:

application:set_env(kernel, global_groups, [GroupTuple|GroupTuples]), 
kernel:config_change([ { global_groups, [GroupTuple|GroupTuples] } ], [], []) 

Предполагая, что вы уже имели конфигурацию global_groups или

application:set_env(kernel, global_groups, [GroupTuple|GroupTuples]), 
kernel:config_change([], [{ global_groups, [GroupTuple|GroupTuples] }], []) 

, если вы настраиваете global_groups в кластер, где он еще не существует.

Вам нужно сделать все, что указано выше, на каждом узле, и если они решат синхронизацию во время процесса, они разделит строки разницы в конфигурации. (См комментарий в global_group source о синхронизации при обновлении выпуска)

Но как только это было сделано, чтобы все они,

global_group:sync() 

должны получить все снова работает.

Я не тестировал вышеуказанный рецепт, но мне он кажется вкусным.^_^

+0

Хороший обзор спасибо :) Я должен посмотреть, что. – ZeissS

2

Узел является выполнение Эрланга выполнения система, которая была дана имя, с помощью -name командной строки флаг (длинные имена) или -sname (короткие имена).

Скрытый узел - это узел, начинающийся с флаг командной строки -hidden. Соединения между скрытыми узлами и другие узлы не транзитивны, они должны быть явно заданы в . Кроме того, скрытые узлы не отображаются в списке узлов, возвращаемых узлами(). Вместо этого должны использоваться узлы (скрытые) или узлов (подключенных). Это означает, например, что скрытый узел не будет добавлен к множеству узлов , которые отслеживает глобальный.

Итак, давайте дадим нашему узлу имя, чтобы другие узлы могли его найти.

Чувствуется, что вы либо просите, не опробовав или не зададите очень сложный вопрос, и, возможно, пример того, что вы пытаетесь сделать, может дать лучший ответ.

Смежные вопросы