Frage

Ich war auf der Suche an den Slave / Pool Module und es scheint, ähnlich dem, was ich wollen, aber es scheint auch, wie ich in einen Single Point of Failure haben meine Anwendung (wenn der Master-Knoten geht nach unten).

Der Kunde hat eine Liste von Gateways (zum Zweck des Rückfalls - alle tun dasselbe ist), die Verbindungen zu akzeptieren, und einer ist, ausgewählt aus zufällig durch die Auftraggeber. Wenn der Client eine Verbindung alle Knoten sind untersucht, um zu sehen, welche die geringste Last und dann die IP-Adresse des am wenigsten hat lasteten Server an den Client weitergeleitet zurück. Der Client mit dem Server verbindet und alles wird dort ausgeführt.

Zusammenfassend möchte ich alle Knoten als beide Gateways handeln und tatsächlich Prozess Client-Anforderungen. Der Lastausgleich erfolgt nur, wenn die Client eine Verbindung zunächst - alle tatsächlichen Pakete und verarbeitet auf "Home" Knoten des Kunden.

Wie würde ich das tun?

War es hilfreich?

Lösung

Ich weiß nicht, ob es diese Module noch nicht umgesetzt ist, aber was soll ich sagen, Lastausgleich überbewertet ist. Was kann ich argumentieren, zufällige Platzierung von Arbeitsplätzen ist die beste Wahl, wenn Sie weit mehr Informationen wissen, wie Last in Zukunft kommen wird und in den meisten Fällen Sie wirklich nicht. Was Sie schrieb:

  

Wenn der Client alle Knoten verbindet geprüft, um zu sehen, welche die geringste Last hat und dann die IP-Adresse des am wenigsten belasteten Server an den Client weitergeleitet zurück.

Wie Sie wissen, dass alle, die am wenigsten belastete Knoten nicht höchsten gerade in der nächsten ms geladen werden? Wie Sie wissen, dass alle diese hochbelastete Knoten, die Sie nicht in der Liste enthalten werden nur in der nächsten ms nicht Last fallen? Sie können wirklich nicht wissen, es sei denn, Sie sehr seltenen Fall haben.

Just Maßnahme (oder berechnet) die Leistung Ihres Knotens und setzte Knotens Wahrscheinlichkeit gewählt werden, hängt davon. Wählen Sie Knoten zufällig unabhängig von Stromlast. Verwenden Sie dies als ersten Ansatz. Wenn Sie es einrichten, dann können Sie versuchen, etwas anspruchsvolleren Algorithmus bilden. Ich wette, dass es sehr schwer sein wird, arbeitet diesen ersten Ansatz zu schlagen. Vertrauen Sie mir, sehr hart.

Bearbeiten : Um mehr klar in ein subtiles Detail, argumentiere ich dringend, dass Sie nicht zukünftige Belastung aus aktuellen und historischen Last vorhersagen können, aber Sie sollten Kenntnisse über Aufgaben Dauer Wahrscheinlichkeit und aktuelle Zersetzung Verwendung von Aufgabe der Lebenszeit. Diese Arbeit ist so schwer zu versuchen, zu erreichen.

Andere Tipps

Der Zweck einer Überwachung Baum ist die Prozesse nicht unbedingt nach vorne Anfragen zu verwalten. Es gibt keinen Grund, den Sie anderen Code keine Anfragen senden direkt an die Mitglieder der Liste der verfügbaren Prozesse nutzen könnten. Siehe den Pool: get_nodes oder Pool. Get_node () -Funktionen für eine Möglichkeit, diese Listen zu bekommen

können Sie den Pool-Modul lassen das Management der Prozesse handhaben (Neustart, Überwachung und Tötung Verarbeitung) und einige andere Modul verwenden, um transparent Anfragen an den Pool von Prozessen zu umleiten. Vielleicht suchen Sie aber verteilten Pools für? Es wird schwer sein, aus dem Master-Prozess in erlang wegzukommen whithout zu verteilten Knoten gehen. Das gesamte Laufsystem ist so ziemlich eine große Aufsicht Baum.

Ich erinnerte mich kürzlich das pg-Modul, das Sie einrichten Prozessgruppen ermöglicht. Nachrichten an die Gruppe gehen in der Gruppe zu jedem Prozess gesendet. Es könnte Teil Weg zu dem, was Sie wollen. Sie würde den Code zu schreiben, um zu entscheiden, welcher Prozess die Anforderung für echte Griffe, aber Sie würden einen Pool ohne einen Master verwenden es.

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