Pergunta

Estou aceitando event função em Nitrogênio, a estrutura da web de Erlang, em um módulo da Web que é executado quando você recebe um postback.

Faz event Sempre execute o mesmo processo para o mesmo cliente da web (ou seja, janela ou quadro do navegador).

Lembro -me de pelo menos um caso em que isso não aconteceu, mas não consigo reproduzi -lo.

Foi útil?

Solução

Não, os eventos de nitrogênio são executados em qualquer processo que esteja atualmente lidando com a solicitação da Web para nitrogênio.

Como o nitrogênio é uma estrutura muito assíncrona, você pode ter vários processos que lidam com vários eventos para a mesma janela do navegador ou quadro de forma assíncrona. Isso significa que você poderia muito bem ter eventos diferentes são tratados por processos separados.

Outras dicas

Ei pessoal, eu descobri o registro de processo para nitrogênio chamado: nprocreg.
Quando você verifica sua pasta de aplicativos ( $ Nitrogen_install_dir/apps/nprocreg ).

Neste aplicativo, os processos podem ser gerados em mais de um aplicativo de nitrogênio servidores, mesmo em várias máquinas. Para experimentar isso, inicie 2 nós Erlang em dois hosts diferentes. ping -lhes para que estejam conectados. (net_adm:ping(?OTHER_NODE)). Agora, comece o nitrogênio nos dois nós de Erlang. Você pode realmente iniciar o nitrogênio e depois pingar os dois nós
Certifique -se de que os dois nós de nitrogênio estejam usando nomes longos, ou seja, [nome] @ip_address em uma LAN.

Agora, em uma terceira máquina na sua LAN, crie um DNS (Name Server). Coloque o mesmo nome mapeando em dois acessórios IP diferentes de nossos dois nós executando as aplicações de nitrogênio. Configure os dois computadores Runnind Nitrogen para garantir que eles apontem para o endereço IP do DNS para serviços DNS (na verdade, faça isso para todos os computadores da sua LAN).
Você descobrirá que, quando solicitar uma página (residindo na raiz do DOC de ambos os aplicativos de nitrogen) de vários computadores na sua LAN, usando o nome mapeado no seu navegador, você vê que o servidor DNS faz algum tipo de balanceamento de carga.
Agora, verifique se a página que você está solicitando pode mostrar a você de qual servidor nitrogen é proveniente na interface. Esta página deve ter dito um botão que gera um evento que vai wf:flash(wf:f("Some statement on the interface",[]))
Agora, solicite esta página em dois computadores diferentes e observe de onde cada um está sendo servido. Em seguida, vá para um servidor de nitrogen e pare.
Quando você agora clica no botão no navegador, que obteve sua página no servidor nitrogen que acabamos de colocar, ele ainda funciona.
É por isso que Rusty e os amigos descobriram que, se os processos de nitrogênio podem ser registrados em mais aplicativos de nitrogênio, quando executados atrás de um balanceador de carga, os eventos podem ser adotados em qualquer aplicativo de nitrogênio no cluster.
É claro que isso funciona bem se você garantir que os dois aplicativos em diferentes máquinas tenham as mesmas páginas, módulos e configuração dos caminhos. Isso ocorre porque a função de retorno da chamada do evento talvez chamando a API do banco de dados.
Um exemplo de balanceamento de carga usando o servidor DNS pode ser visto quando você 'cavar' o Google do seu terminal no Linux ou Solaris como este:

dig www.google.com
Você verá que o servidor de nomes tem o mesmo nome mapeado em vários endereços IP. Isso garante a disponibilidade entre os domínios e garante algum tipo de balanceamento de carga
/Joshmuza@gmail.com

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