Das Problem besteht darin, dass ein Teil der verteilten Anwendungsverhandlungen darin besteht, dass die Anwendung bei allen Knoten gestartet wird, wenn der Nodes-Handshake bestimmt, welcher Knoten bleiben und welcher stillgelegt wird. Ich brauche die Anwendung, um nicht auf mehreren Knoten zu sein, wenn möglich.
Leider sind die Erlang-Übernahmekapazitäten und die Failover-Funktionen heutzutage ziemlich begrenzt, daher muss Ihre Anwendung auf allen Knoten laufen, damit diese Funktionen funktionieren.
Die einzige Idee, die mir in den Sinn kommt, ist ein bisschen verrückt und beinhaltet eine weitere Stufe der Indirektion, aber es könnte tatsächlich funktionieren.
Sie könnten eine gefälschte, einfache -Wrapper -Anwendung schreiben, die Sie dann auf allen Knoten starten. Diese Anwendung verwendet die standardmäßigen Erlang-Verteilungsfunktionen. Anschließend implementieren Sie Ihre Übernahme- / Failover-Strategien, indem Sie einfach Ihre ursprüngliche Anwendung starten:
%Vor% Beachten Sie auch, dass wenn Sie application:start(my_app)
für eine verteilte Anwendung in all Ihren Knoten eingeben, die Anwendung nicht auf allen Knoten gestartet wird. Sie können dies überprüfen, indem Sie application:which_applications()
auf jedem der Knoten eingeben. Sie werden feststellen, wie die Anwendung läuft auf einem einzelnen Knoten.
Zum Schluss, darf ich fragen, warum Sie die Anwendung nicht auf mehr als einem Knoten starten können?
Tags und Links erlang distributed-apps