Die einfachste Lösung zu implementieren, um den Zustand in einer separaten Datenbank zu speichern, so dass, wenn Sie über fehlschlagen, wird der Standby nur die gleiche Datenbank weiterverwenden. Wenn Sie sich Sorgen machen, dass die Datenbank abstürzt, zahlen Sie das Geld und die Komplexität, die für die Haupt- und Standby-Datenbanken erforderlich sind, wobei die Datenbank ebenfalls ausfällt. Dies ist ein Versuch, die Komplexität der Handhabung von Status über Failover auf die Datenbank zu verschieben. Natürlich können Sie feststellen, dass der Overhead von Datenbanktransaktionen zu einem Engpass wird. Es mag verlockend sein, NoSQL zu verwenden, aber denken Sie daran, dass Sie sich wahrscheinlich auf die ACID-Garantien verlassen, die Sie mit einer herkömmlichen Datenbank erhalten. Wenn Sie diese ablehnen und in der Regel eine Konsistenz erhalten, müssen Sie darüber nachdenken, was dies beim Failover bedeutet. Werden Sie eine kleine Menge neuer Informationen zum Failover verlieren? kümmert es dich?
Virtuelle Synchronität sieht interessant aus. Ich habe nach ähnlichen Dingen gesucht und akademische Seiten wie http://www.cs.cornell.edu/ken/ gefunden, von denen einige Links zu Open-Source-Software haben, die von Forschungsgruppen produziert wurde. Ich habe sie nie benutzt. Ich scheine mich an Berichte zu erinnern, dass sie für eine kleine Anzahl von Maschinen mit sehr guter Konnektivität ziemlich gut funktionierten, aber Leistungsprobleme mit der Skalierung hatten, was vermutlich kein Problem für Sie sein wird.
war einmal Menschen auf Unix-Maschinen Multi-Prozess-Systeme gebaut durch die Prozesse über den gemeinsam genutzten Speicher kommunizieren mit oder Memory-Mapped-Dateien. Für sehr einfache Datenstrukturen kann dies zum Funktionieren gebracht werden. Ein Problem, das Sie haben, ist, wenn einer der Prozesse auf halbem Wege durch die Änderung der gemeinsamen Daten abstürzt - wird das die anderen Prozesse durcheinander bringen? Sie können diese Probleme lösen, aber Sie sind in Gefahr zu entdecken, dass Sie alles in der Datenbank implementiert haben, die ich in meinem ersten Absatz beschrieben habe.
, Dank! Ich habe deine Antwort gestern gesehen und ich habe über Redis recherchiert. Ich würde das gerne mit riesigem Code verwenden. Wir haben vielleicht 500 Klassen und andere Datenstrukturen. Also müsste ich zum Konstruktor dieser Klassen hinzufügen, um die Informationen von redis zu erhalten und in den destructor/other setter Funktionen die Änderung in redis zu übernehmen? –