Frage

Ich nehme etwa event Funktion in Nitrogen, das Erlang-Webframework, in einem Webmodul, das ausgeführt wird, wenn Sie ein Postback erhalten.

Tut event werden immer im selben Prozess für denselben Webclient (d. h. Browserfenster oder Frame) ausgeführt.

Ich erinnere mich an mindestens einen Fall, in dem das nicht passiert ist, aber ich kann es nicht reproduzieren.

War es hilfreich?

Lösung

Nein, Stickstoffereignisse werden in dem, wo immer der Prozess derzeit die Webanforderung für Stickstoff bearbeitet, ausgeführt.

Da Stickstoff ein sehr asynchrones Rahmen ist, können mehrere Prozesse mit mehreren Ereignissen für dasselbe Browserfenster oder asynchronem Rahmen abwickeln. Dies bedeutet, dass Sie sehr gut verschiedene Ereignisse durch separate Prozesse erledigen können.

Andere Tipps

Hallo Leute, ich habe das Prozessregister für Stickstoff entdeckt, das heißt: nprocreg.
Wenn Sie Ihren Apps-Ordner überprüfen ( $NITROGEN_INSTALL_DIR/apps/nprocreg ).

In dieser Anwendung können Prozesse auf mehr als einem Nitrogen-App-Server, sogar auf mehreren Maschinen, erzeugt werden.Um damit zu experimentieren, starten Sie zwei Erlang-Knoten auf zwei verschiedenen Hosts.Pingen Sie sie an, damit sie verbunden sind.(net_adm:ping(?OTHER_NODE)).Starten Sie nun Stickstoff auf beiden Erlang-Knoten.Sie könnten tatsächlich zuerst den Stickstoff starten und dann die beiden Knoten anpingen
Stellen Sie sicher, dass die beiden Stickstoffknoten lange Namen verwenden, z. B. [NAME]@IP_ADDRESS in einem LAN.

Erstellen Sie nun auf einem dritten Computer in Ihrem LAN einen DNS (Nameserver).Fügen Sie die gleiche Namenszuordnung auf zwei verschiedene IP-Adressen unserer beiden Knoten ein, auf denen die Stickstoffanwendungen ausgeführt werden.Konfigurieren Sie die beiden Computer, auf denen Nitrogen ausgeführt wird, um sicherzustellen, dass sie auf die DNS-IP-Adresse für DNS-Dienste verweisen (tun Sie dies tatsächlich für alle Computer in Ihrem LAN).
Sie werden feststellen, dass Sie feststellen, dass der DNS-Server eine Art Lastausgleich durchführt, wenn Sie von mehreren Computern in Ihrem LAN eine Seite anfordern (die sich im Stammverzeichnis beider Nitrogen-Apps befindet) und dabei den zugeordneten Namen in Ihrem Browser verwenden.
Stellen Sie nun sicher, dass die Seite, die Sie anfordern, auf der Schnittstelle anzeigen kann, von welchem ​​Stickstoffserver sie stammt.Diese Seite muss beispielsweise über eine Schaltfläche verfügen, die ein Ereignis generiert, das dies bewirkt wf:flash(wf:f("Some statement on the interface",[]))
Fordern Sie diese Seite nun auf zwei verschiedenen Computern an und notieren Sie, von wo aus die jeweilige Seite bereitgestellt wird.Gehen Sie als Nächstes zu einem Stickstoffserver und stoppen Sie ihn.
Wenn Sie nun im Browser auf die Schaltfläche klicken, die die Seite des Stickstoffservers aufgerufen hat, die wir gerade erstellt haben, funktioniert es immer noch.
Aus diesem Grund haben Rusty und seine Freunde herausgefunden, dass die Ereignisse an jede Nitrogen-App im Cluster weitergeleitet werden können, wenn Nitrogen-Prozesse über mehrere Nitrogen-Apps registriert werden können, wenn sie hinter einem Load Balancer ausgeführt werden.
Dies funktioniert natürlich gut, wenn Sie sicherstellen, dass die beiden Apps auf verschiedenen Computern dieselben Seiten, Module und Pfadkonfigurationen haben.Dies liegt daran, dass die Ereignisrückruffunktion möglicherweise beispielsweise eine Datenbank-API aufruft.
Ein Beispiel für den Lastausgleich mithilfe eines DNS-Servers können Sie sehen, wenn Sie Google von Ihrem Terminal aus unter Linux oder Solaris wie folgt „ausgraben“:

dig www.google.com
Sie werden sehen, dass der Nameserver mehreren IP-Adressen denselben Namen zugeordnet hat.Dies stellt die domänenübergreifende Verfügbarkeit sicher und sorgt für eine Art Lastausgleich
/joshmuza@gmail.com

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top