Pregunta

Estoy tomando event función en Nitrógeno, el marco web de Erlang, en un módulo web que se ejecuta cuando obtienes una devolución.

Lo hace event Siempre ejecute en el mismo proceso para el mismo cliente web (es decir, ventana o marco del navegador).

Recuerdo al menos un caso en el que eso no sucedió, pero no puedo reproducirlo.

¿Fue útil?

Solución

No, los eventos de nitrógeno se ejecutan en el proceso que actualmente maneje la solicitud web de nitrógeno.

Dado que el nitrógeno es un marco muy asincrónico, puede tener múltiples procesos que manejan múltiples eventos para la misma ventana del navegador o marco de manera asincrónica. Esto significa que bien podría tener diferentes eventos que sean manejados por procesos separados.

Otros consejos

Hola chicos, he descubierto el registro de procesos de nitrógeno llamado: nprocreg.
Cuando revisa la carpeta de su aplicación ( $ Nitrogen_install_dir/apps/nprocreg ).

En esta aplicación, los procesos se pueden generar en más de un servidor de aplicaciones de nitrógeno incluso en múltiples máquinas. Para experimentar con esto, inicie 2 nodos Erlang en dos hosts diferentes. Pinglos para que estén conectados. (net_adm:ping(?OTHER_NODE)). Ahora, comience el nitrógeno en ambos nodos Erlang. En realidad, podría iniciar primero el nitrógeno y luego hacer ping a los dos nodos
Asegúrese de que los dos nodos de nitrógeno estén utilizando nombres largos, es decir, [nombre] @IP_Address en una LAN.

Ahora, en una tercera máquina en su LAN, cree un DNS (servidor de nombres). Coloque la misma asignación de nombre en dos directores IP diferentes de nuestros dos nodos que ejecutan las aplicaciones de nitrógeno. Configure las dos computadoras Runnind nitrógeno para asegurarse de que apunten a la dirección IP DNS para servicios DNS (realmente haga esto para todas las computadoras en su LAN).
Descubrirá que cuando solicite una página (que reside en la raíz doc de ambas aplicaciones de nitrógeno) de varias computadoras en su LAN, utilizando el nombre asignado en su navegador, vea que el servidor DNS realiza algún tipo de equilibrio de carga.
Ahora, asegúrese de que la página que solicita puede mostrarle de qué servidor de nitrógeno proviene de la interfaz. Esta página debe tener un botón que genera un evento que wf:flash(wf:f("Some statement on the interface",[]))
Ahora, solicite esta página en dos computadoras diferentes y tenga en cuenta de dónde se sirve cada una. A continuación, vaya a un servidor de nitrógeno y deténgalo.
Cuando ahora hace clic en el botón en el navegador que obtuvo su página, el servidor de nitrógeno que acabamos de poner, todavía funciona.
Es por eso que Rusty y los amigos descubrieron que si los procesos de nitrógeno se pueden registrar en más aplicaciones de nitrógeno, cuando se ejecutan detrás de un equilibrador de carga, los eventos se pueden obtener a cualquier aplicación de nitrógeno en el clúster.
Por supuesto, esto funciona bien si se asegura de que las dos aplicaciones en diferentes máquinas tengan las mismas páginas, módulos y configuración de rutas. Esto se debe a que la función de devolución de llamada del evento puede llamar a una API de la base de datos.
Se puede ver un ejemplo de equilibrio de carga utilizando el servidor DNS cuando 'cava' Google desde su terminal en Linux o Solaris como este:

dig www.google.com
Verá que el servidor de nombres tiene el mismo nombre asignado en varias direcciones IP. Esto garantiza la disponibilidad en todos los dominios y garantiza algún tipo de equilibrio de carga.
/joshmuza@gmail.com

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top