2017-01-26 10 views
0

分散型マイクロサービスアプリケーションの各ノードに分離されたローカルキャッシュを使用することは悪い習慣と考えられますか?モノリシックアプリケーションでは、ローカルEHCacheをHibernateの第2レベルのキャッシュプロバイダとして使用することはOKですが、分散環境ではMemcached、Redis、Hazelcastなどの分散キャッシュを使用するのが一般的です。各ノードに分離キャッシュを使用した場合の影響は何ですか?マイクロサービスベースのアーキテクチャと各ノードの個別キャッシュ

答えて

4

「コンピュータサイエンスの2つだけ難しい問題があります。キャッシュの無効化と命名のものは」 - フィルKarlton

アプリ・サーバー内のローカルキャッシュの主な問題は、それがキャッシュの無効化を行っていることです以前よりずっと難しかったです。

リソースが変更されるたびに、すべてのローカルキャッシュで無効化(および更新)する必要があります。これには、任意の時点で実行されているすべてのキャッシュサーバーを知っているシステムが必要です。このシステムでは、すべてのサーバー上のデータ無効化を調整できるように、すべての更新について通知する必要があります。また、リトライや障害の発生したサーバーの処理なども行う必要があります。

アプリケーションサーバーにローカルキャッシュがある場合は、別のシステムまたはアプリケーションコードを使用してこれらの問題を解決する必要があります。分散キャッシングシステムは、あなたのためにこれらの問題を解決しました。更新呼び出しを行うことができ、成功した場合はデータの一貫性(または最終的な整合性)が保証されます。

これは懸念の分離です。別個のキャッシュ・キャッシュ・クラスタでは、キャッシュ・ロジックおよび関連する問題が1か所で処理されます。開発するアプリケーションごとに同じクラスターをやり直すのではなく、同じクラスターを複数のアプリケーションで簡単に再利用することができます。

パフォーマンスの低下を望まない場合は、新しいサーバーを起動するたびにキャッシュをウォームアップする必要があります。これにより、サーバーを起動する時間が長くなります。

+0

ありがとうございます。 – mkorman

関連する問題