Pergunta

apoio Erlang para particionar os seus nodos em grupos usando o global_group módulo. Além disso, Erlang suportes adição de nós em tempo real para o nó-rede. São essas duas características utilizável com o outro?
Tanto quanto eu entendo, você tem que nomear cada nó no arranque para utilizar os grupos globais.

Foi útil?

Solução

Olhando para o global_group fonte , a lista de nós é parte da configuração marcada pelos nós como eles sincronizar.

Há, porém, uma função exportada global_group : global_groups_changed que lida com o nó-lista mudando

.

Isso é chamado de do kernel: config_change (Veja Módulo: config_change / 3 ) por isso é certamente possível adicionar novos nós a um global_group durante uma atualização de release (OTP estilo de sistemas embarcados) (See "Atualizando Especificações da aplicação" )

pode ser possível simplesmente fazer:

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

Supondo que você já teve uma configuração global_groups, ou

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

Se você estiver configurando global_groups em um cluster onde já não existe.

Você precisa fazer o acima em cada nó, e se eles decidirem sincronização durante o processo, eles vão dividir as linhas da diferença de configuração. (Veja o comentário no href="http://github.com/erlang/otp/blob/dev/lib/kernel/src/global_group.erl#L192" rel="nofollow fonte global_group sobre a sincronização durante uma atualização de release)

Mas, uma vez que tem sido feito para todos eles,

global_group:sync()

deve obter tudo funcionando novamente.

Eu não testei a receita acima, mas parece saborosa para mim. ^ _ ^

Outras dicas

Um nó é um tempo de execução Erlang execução sistema que foi dado um nome, usando a linha de comando bandeira -name (nomes longos) ou -sname (nomes curtos).

Um nó escondido é um nó começou com a bandeira linha de comando -hidden. Conexões entre nós ocultos e outros nós não são transitivas, eles deve ser configurado de forma explícita. Além disso, se nós ocultos não aparecem na lista de nós retornados por nós (). Em vez disso, nós (oculto) ou nodos (ligado) deve ser usado. este significa, por exemplo, que a oculta nó não será adicionada ao conjunto de nós que global está mantendo o controle de.

Assim, em breve, sim, você precisa dar o nosso nó um nome para ser capaz outros nós para encontrá-lo.

Parece que você quer estão pedindo sem experimentar ou tem uma pergunta muito complexa e talvez um exemplo do que você está tentando realizar poderia torná-lo possível dar uma resposta melhor.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top