1

私たちのサイトは最近、いくつかの小さなサイトに分割され、その後、異なる IDC に分散されます。

これらのサイトの 1 つはユーザー認証およびその他のユーザー関連サービスを提供し、他のサイトは Web サービスを介してアクセスします。

リモートでデータを取得するすべてのサイトで、ユーザー情報が必要になるたびにリモートに移動する必要がないように、ローカル キャッシュを作成します。

データの整合性を確保するために、どのキャッシュ更新戦略を推奨しますか?

4

1 に答える 1

1

リアルタイムに近い更新ポリシーが必要なため、キャッシュ無効化通知エンジンが必ず必要です。

それには 2 つの可能な実装モデルがあります。

1.Pull メイン サーバーは、次のような通知メッセージで子サーバーをプルします"resourceID=34392 not more valid in your cache"。このメッセージは、メイン サーバーでデータが更新されるたびに送信する必要があります。

  1. ポーリング 各子サーバーは、ユーザーに提供する前にキャッシュ項目の有効性についてメイン サーバーに問い合わせます。もちろん、この場合、メインサーバーは、最後のキャッシュライフタイム期間中にオブジェクトのリストを更新し続け、"If-object-was-updated"リクエストに非常に迅速に応答する必要があります。

両方のケースでわかるように、メイン サーバーはデータが変更されるたびにイベントをトリガーする必要があります。最初のケースでは、このイベントは「通知バス」を介して子サーバーに転送され、2 番目のケースでは、このイベントはrecently-updated-objectsリストに格納されます。したがって、どちらのオプションでも、メイン サーバーでコードを変更する必要があります。

私にとっては、2 番目のオプションは一般的に実装するのがはるかに簡単ですが、使用しているソフトウェア スタックに大きく依存します。

于 2011-01-20T08:29:36.423 に答える