分散(ピアツーピア)クラスタの通知/プッシュサービスを設計することは容易ではありません。たとえば、CassandraがサービスAへの通知をプッシュしたい場合、1つのテーブルフィールドがサービスBで値を変更した場合、それは簡単ではありません。これは、Cassandraが分散型に構成されている(5ノードなど)ため、3つのノードのクォーラムがコミットされた時点を知らずに、変更をAにプッシュするためです。ただし、集中型(マスター - スレーブ)クラスタでは、状況が異なります。たとえば、ZooKeeperは、5つのうち3つのノードがコミットされたことを知り、通知サービスを整理することができます。分散クラスタで通知/プッシュサービスを設計するにはどうすればよいですか?
どのように分散型クラスタでこのようなプッシュサービスを設計できますか?
明らかな解決策は、一定の時間(たとえば10秒)待ってからBに関係なく通知することです。
別のオプション:サービスBは、定足数が満たされていることカサンドラから3つのACKを受信した場合には、Bはそれを送信する代わりのカサンドラ自体に通知を送信します。
その他の適切なソリューションはありますか?