(Tut mir leid, wenn dies nicht das richtige Forum ist. StackOverflow scheint auch nicht richtig zu sein. Ich dachte, es gäbe früher auf der Homepage eine Beschreibung, die besagt, welche Art von Fragen relevant sind, aber ich kann sie heute nicht finden.)
Ich habe mehrere Server, die Daten für eine Reihe von Clients verarbeiten. Ich weiß nicht im Voraus, welche Clients sich mit welchen Servern verbinden, und die Clients können zwischen den Servern wechseln. Ich brauche eine Möglichkeit, damit die Server die neuesten Informationen über einen Client austauschen können.
Angenommen, ich habe die Clients C1, C2, C3 und C4 und die Server S1 und S2. Die Server starten und wissen, dass die Clients C1..C4 sind, wissen aber nichts über sie. C1 und C2 stellen eine Verbindung zu S1 her und S1 behält einen Status über sie bei. In regelmäßigen Abständen teilt S1 den aktuellen Status für C1 und C2 mit S2. Irgendwann trennt C1 die Verbindung zu S1 und stellt eine Verbindung zu S2 her. S2 hat einen leicht veralteten Status für C1 und kann die Handhabung von C1 größtenteils ohne Unterbrechung wieder aufnehmen.
In der Zwischenzeit verbinden sich C3 und C4 mit S2 und es passiert praktisch das Gleiche. S2 behält den Status von C3 und C4 bei und informiert S1 regelmäßig darüber. Wenn C3 zu S1 wechselt, hat es bereits einen leicht veralteten Status.
Ich habe MQTT in Betracht gezogen und jeden Server veröffentlichen lassen, was er weiß, und abonnieren lassen, was er wissen möchte, aber das von mir erwartete Datenvolumen passt nicht sehr gut zum Anwendungsfall von MQTT. (Es könnten 256.000 Clients oder mehr sein. Übrigens sind die clientspezifischen Daten etwa 64 Byte groß.)
Mir kam Redis in den Sinn, aber das scheint nicht ganz richtig zu sein, da bei der Replikation anscheinend die gesamte Instanz von einem Master auf eine Replik kopiert wird und ich hier Teile der Daten habe, die jedem Server gehören (oder zuletzt aktualisiert wurden).
Wenn Redis nicht das richtige Tool ist, welche Möglichkeiten habe ich?
Ich bin dir dankbar.