2016-04-28 11 views
2

2つのノードにSpringブートアプリケーションがあります。今度は、5秒ごとに外部サービスを呼び出す代わりに、キャッシュにデータを保存したいと考えています。問題は、2つのノード間でキャッシュを共有する方法です。出来ますか ?または、ノードごとに2回、別々のキャッシュを作成することもできますか?どのアプローチが良いですか?私は共有キャッシュを維持することはかなり難しいと思います。任意のヒントありがとうございますスプリング4、共有キャッシュのノード

+0

クラスタリング用に設定されたEhcacheを使用できます。 –

+0

ehcacheに別のサーバーが必要ですか? – user3528733

+0

いいえ、それはあなたのアプリケーションに埋め込むことができる単なるライブラリです。別のプロセスでもありません。 –

答えて

6

Infinispan、hazelcast、Apache Igniteなどのクラスタ化された、または分散したキャッシュ製品を表す用語「共有キャッシュ」を選択します。

一貫

次の理由のために共有キャッシュをすることができ、アプリケーションが一つのノードにキャッシュを更新した場合、共有キャッシュは、更新の伝播を気にし、すべてのノードが見ていることを確実にするでしょう更新後の新しい値が終了します。これは共有キャッシュが提供できるものですが、必ずしも "共有キャッシュ"製品が行うわけではありません。

タイムズ10問題:あなたはより多くのノードを追加すると、共有キャッシュはそうでない場合、各ノードは、同一の値を要求するかもしれない、外部サービスへの要求を制限します。

大きなデータ:これは分散キャッシュに適用されます。さらに1つのシステムにスペースがある場合、より多くのデータをキャッシュできます。

ただし、構成とデプロイの複雑さが増しますが、このメリットがあります。また、共有キャッシュへのアクセスレイテンシは、通常、ローカルキャッシュの場合よりもはるかに高くなります。比較のために、benchmarksを見てください。

まとめ:現在、2つのノードがあります。コーディネートされた更新または無効化の問題がない場合は、単純なローカルキャッシュを維持してください。あなたが将来の証明をしたいと思って共有キャッシュで暇つぶしにしたいなら、それを手に入れてください:)

0

私はすでにスプリングブートを使用しているので、バックグラウンドでRedisを使ってキャッシュ抽象化(アノテーション) 。 Redisは簡単に共有してクラスタ化でき、十分なパフォーマンスを発揮します。 official documentation

+0

いいですが、別のマシンでredisをインストールする必要はありますか? – user3528733

+0

フォールトトレラントにしたい場合は、複数のマシンにRedisをインストールし、HAクラスタをセットアップする必要があります(http://redis.io/topics/cluster-tutorial)。アプリケーションを実行しているマシンと同じマシンでこれを行うことができるのであれば、セキュリティー要件と、十分な容量が残っているかどうかによって異なります。 –

関連する問題