問題のキャッシュ[アバランシェ降伏]

キャッシュの浸透

クエリキャッシュの手順:

  1. データベースキャッシュクエリKV。リターンがあります
  2. データが存在しない場合は、クエリのバックエンドデータベースのSQL

キャッシュの浸透

キーが故意に悪質なリクエストのクエリは、クエリのバックエンドデータベースを開始するために、Redisのなどの内部キャッシュデータベースに存在しません。データ量が大きい場合、それは圧力、バックエンドが増加します。これは、キャッシュの浸透

避けるためにどのように?

  1. 要求のフィルタリング:キャッシュへのすべての可能なリクエスト(ブルームフィルタ、ビットマップ格納...)のクエリ。ではコントローラ層のパラメータがルールに準拠している場合、検証のためのオーバー要求、放し、エラーが返されます満たしていません。
  2. キャッシュはnull:要求を見つけると同時に来た場合はキャッシュデータベースバックエンドデータベースは、次のことができ、キャッシュヌル値、見つけることができません。しかし、キャッシュ短い制限時間に注意を払います。リクエストが直接キャッシュされたNULL値を返し、再び来ます。キーを挿入したデータの場合は、ビジネスへの影響を防ぐために、すぐにキャッシュされたヌル値を削除する必要があります。
  3. アップデートの確認:キー有効期限の更新をチェックするために来て要求があるたびに

キャッシュ雪崩

キャッシュサーバの再起動やキャッシュ多数の1つの期間に集中した場合、失敗するので、失敗、バックエンドシステムは、多くの圧力をもたらすとき。システムがクラッシュします。

ソリューション:

  1. 高可用性クラスタ
  2. ダウングレードの制限、ロック
  3. 定期的なタスクを常にチェックし、更新前のキャッシュが期限切れになります

同時並行性キャッシュ

例えば、キャッシュ雪崩、クエリ内のデータ・キャッシュの大量後のデータのデータベースから大量。

ソリューション:

ロック分散、同時の数を制御

おすすめ

転載: www.cnblogs.com/biningooginind/p/12609262.html