(このフォーラムが適切でない場合は申し訳ありません。StackOverflow も適切ではないようです。以前はホームページにどのような質問が関連しているかの説明があったと思いますが、今日は見つかりません。)
複数のサーバーがあり、複数のクライアントのデータを処理します。どのクライアントがどのサーバーに接続するかは事前にわかりません。また、クライアントはサーバー間を移動する可能性があります。サーバーがクライアントに関する最新情報を共有する方法が必要です。
たとえば、クライアント C1、C2、C3、C4 とサーバー S1 および S2 があるとします。サーバーは起動し、クライアントが C1 ~ C4 であることを認識しますが、それらについては何も知りません。C1 と C2 は S1 に接続し、S1 はそれらに関する状態を維持します。定期的に、S1 は C1 と C2 の現在の状態を S2 と共有します。ある時点で、C1 は S1 から切断され、S2 に接続します。S2 は C1 の状態が少し古くなっていますが、ほとんどの場合、中断することなく C1 の処理を引き継ぐことができます。
その間に、C3 と C4 が S2 に接続し、ほぼ同じことが起こります。S2 は C3 と C4 の状態を維持し、定期的に S1 にそれらについて通知します。C3 が S1 に移動すると、すでに少し古い状態になっています。
私は MQTT を検討し、各サーバーが知っている情報を公開し、知りたい情報をサブスクライブするようにしましたが、予想されるデータの量は MQTT のユースケースにはあまり適していませんでした。(クライアントは 256,000 以上ある可能性があります。参考までに、クライアント固有のデータは ~64 バイトです。)
Redis が頭に浮かびましたが、レプリケーションではインスタンス全体がマスターからレプリカにコピーされるようで、ここでは各サーバーが所有する (または最後に更新された) データの部分があるため、あまり適切ではないようです。
Redis が適切なツールでない場合、どのような選択肢がありますか?
ティア。