分散型 (ピアツーピア) クラスターの通知/プッシュ サービスを設計するのは簡単ではありません。たとえば、Cassandra に Service Aに通知をプッシュさせたい場合、1 つのテーブル フィールドの値が Service Bによって変更された場合、それは簡単ではありません。これは、Cassandra が分散化された方法 (たとえば 5 ノード) で編成されているためであり、変更をAにプッシュする前に 3 つのノードのクォーラムがいつコミットされるかがわからないためです。ただし、集中型 (マスター/スレーブ) クラスターでは事情が異なります。たとえば、ZooKeeper は、5 つのノードのうち 3 つのノードがいつコミットされるかを認識しており、通知サービスを手配できます。
分散型クラスターでこのようなプッシュ サービスを設計するにはどうすればよいでしょうか?
明らかな解決策の 1 つは、一定時間 (たとえば 10 秒) 待機し、関係なくBに通知することです。
別のオプション: サービスBが Cassandra から定足数が満たされたという確認応答を 3 つ受信した場合、Bは、Cassandra 自体が通知を送信する代わりに、通知をAに送信します。
他にまともな解決策はありますか?