クラスター化され、コアにキャッシュを持つアプリケーションがあります。キャッシュは計算されたデータに基づいており、基礎となるデータベースから構築されます (これも複製されます)。これは、ストリーミング データの高速ルックアップに使用され、その場でルーティングの決定を行います。
キャッシュが計算されるデータはクラスター内の任意のノードから変更できるため、システム内の他のノードからの複製された変更をリッスンする必要がないように、キャッシュも複製することを考えています。 、データベース固有の方法で。
可能性のあるキャッシュ実装として、ehcache (infinispan / hazelcast with nearcache が他の候補) を特定しました。ここまでは順調ですね。
私が知る必要があるのは、個々のノードまたはアプリケーション全体が再起動したときに、このキャッシュがどのように再設定されるかです。ノードが必要とするすべてのデータは、基礎となるデータベースに存在します。それでは、各ノードは単純にデータベースからデータをロードし、再起動後にキャッシュに入力できますか? キャッシュはどのようにしてクラスター ノードを単一の状態にしますか?
ディスクに永続化されたキャッシュがあることは理解していますが、ehcache を使用する方法はありますか? すべてのデータの唯一のポイントはデータベースであり、それが正しいデータを決定するための中央機関であるため、最初の選択肢としてそれを使用したくありませんでした。
アプリが再起動時にすべてのデータでキャッシュをリロードし、すべてのキャッシュで同じことを行い、デルタを同期させる方法はありますか? これは難しいことであり、すべてのノードがすべてのキーをやり取りするわけではないため、実行できない可能性があると思います。しかし、このシナリオを処理するための他の戦略があるかどうかを確認したいと思っていました.