web-dev-qa-db-ja.com

クラスタリング環境でWebアプリケーションを実行しているときにサーバーのキャッシュを動的に更新する方法は?

クラスタリングモードのアプリケーションまたはWebサーバーで実行される典型的なWebアプリケーションを考えてみましょう。クラスターに3つのノードがあり、アプリケーションがこれらの3つのノードで実行され、すべてのユーザーリクエストを処理しているとします。データベースに保存されるプロパティ値がいくつかあり、このアプリケーションがサーバー側でノードレベルでキャッシュを維持するたびにデータベースにアクセスする代わりに、これらのプロパティ値をキャッシュに保存し、キャッシュから値を提供します。

ここで、データベースのプロパティ値を更新します。この更新された値がすべてのノードのキャッシュに確実に反映されるようにするにはどうすればよいですか?

1
user10612

私はそれを行う2つの方法だと思います。キャッシュがクラスターレベルになるか、エントリの無効化を各サーバーにブロードキャストする必要があります。

私は、無効なキーをそれぞれ保持し、サーバーがそのデータベースをチェックしてキーがまだ有効であることを確認する中央データベースにすることができる第3の方法があると言います(しかし、実装するのは少し複雑です)

そのため、クラスターでのキャッシュレベルは確かに最も簡単ですが、キャッシュサーバーを配置する理由に依存します(メインデータベースの単なるレプリケーションの場合、このソリューションは無効です)。

1
stunti