2016-04-27 5 views
0

実行中のWebサーバーインスタンスが多数あるWebサーバークラスタがあります。各インスタンスはローカルメモリにいくつかの設定をキャッシュし、元の設定はデータベースに保存されます。すべてのサーバーインスタンスでローカルメモリキャッシュを更新する方法

これらの設定はすべての要求で使用されるため、パフォーマンス上の理由からキャッシュが必要な場合があります。

管理者が設定を変更できる管理者ページを提供したいと考えています。すべてのサーバーインスタンスですべてのキャッシュを更新するにはどうすればよいですか?

は今、私はこのために2つのソリューションがあります。

  1. セットをANキャッシュの時間を有効期限が切れます。
  2. アドミニストレーターが設定を更新するときには、pub/subメカニズム(例:redisを使用)によって各インスタンスに通知します。

解決策1の場合、変更はすぐに反映されません。ソリューション2のために
、私はパブ/サブがWebサーバーのパフォーマンスに影響を与える場合は、疑問に思っています。

どれが良いですか?またはこの問題に対する一般的な解決策がありますか?

+0

A、よく知られている「ソフトウェアのエンジニアリングには2つの困難な問題があります:命名、キャッシュの無効化、オフ・バイ・ワンのエラー」があります。 – gudok

答えて

0

オプション1のもう一つの欠点は、定期的にデータベースを不必要にヒットすることです。

すでにRedisを使用している場合は、オプション2を使用することをお勧めします。私はそれをうまく使いましたが、あなたがpubsubを使っているからといってパフォーマンスがどのように影響するか想像できません。

別の方法として、各ウェブサイトにキャッシュ無効化URLを作成することもできます。/admin/cache-reset /を実行し、管理ツールに個々のサーバーごとにcache-reset URLを呼び出します。このソリューションの欠点は、サーバーのリストを維持する必要があることです。 Redisをまだ使用していない場合は、探しているシンプル/実用的/ローテクのソリューションになります。

+0

私はオプション1を試してみるつもりです。ありがとう! – Freedom

関連する問題