Kürzlich habe ich einige Load-Balancing-Funktionen zu einer Software hinzugefügt, die ich geschrieben habe. Es ist eine vernetzte Anwendung, die einige Daten verarbeitet, basierend auf Eingaben, die von einer SQL-Datenbank kommen. Da das Knirschen ziemlich intensiv sein kann, habe ich die Möglichkeit hinzugefügt, mehrere Instanzen dieser Anwendung auf verschiedenen Servern laufen zu lassen, um die Last zu teilen, aber wie es jetzt ist, ist der Lastausgleich ein manueller Akt. Ein Benutzer muss angeben, welche Instanzen welchen Teil der Eingangsdomäne annehmen.Heartbeat-Protokolle/Algorithmen oder Best Practices
Ich möchte das auf die nächste Ebene bringen und die Instanzen so programmieren, dass sie das Eintauchen der Eingabedaten automatisch aushandeln und erkennen, ob einer von ihnen "verschwindet" (abgestürzt ist oder heruntergefahren wurde) verbleibende Instanzen können die Arbeitsauslastung der fehlgeschlagenen Instanz übernehmen.
Um dies zu implementieren, überlege ich, ein einfaches Heartbeat-Protokoll zwischen den Instanzen zu verwenden, um festzustellen, wer online und wer nicht ist und während dies nicht schrecklich kompliziert ist, würde ich gerne wissen, ob es etablierte Heartbeat-Netzwerk gibt Protokolle (basierend auf UDP, TCP oder beiden).
Offensichtlich passiert dies viel in der Netzwerkwelt mit Clustering, Failover und Hochverfügbarkeitstechnologien, also würde ich am Ende gerne wissen, ob es vielleicht etablierte Protokolle oder Algorithmen gibt, die ich beachten sollte von oder implementieren.
EDIT
Es scheint, auf der Grundlage der Antworten, dass entweder gibt es keine gut Herzschlag Protokolle etabliert oder dass niemand kennt sie (was bedeuten würde, dass sie gar nicht so gut etabliert sind) In diesem Fall werde ich nur meine eigenen rollen.
Während keine der Antworten bot, was ich speziell suchte, werde ich für Matt Davis's answer abstimmen, da es am nächsten war und er wies auf eine gute Idee, Multicast zu verwenden.
Vielen Dank für Ihre Zeit ~
Wissen Sie, ob es möglich ist, die nativen Heartbeat-Meldungen von WebLogic anzupassen, um zusätzliche Informationen wie aktuelle CPU- und/oder Netzwerklast hinzuzufügen? (Um Lastenausgleichsalgorithmen zu ermöglichen, die diese Informationen verwenden, um einen überlasten Server mit mehr Anfragen zu überlasten) – XpiritO
Das ist eher eine Frage für Pascal (http://stackoverflow.com/questions/1442189/heartbeat-protocols-algorithms-or-) Best-Practices/1442255 # 1442255). Ich bin mit WebLogic nicht so vertraut - in meinem Fall habe ich das verwendet, woran ich bereits angefangen habe zu arbeiten, eine benutzerdefinierte Lösung auf UDP-Basis. –