redis avalancheとは何ですか?以下の記事で簡単に紹介していますので、ご参考になれば幸いです。
雪崩とは何ですか?
キャッシュ層は大量のリクエストを運ぶため、ストレージ層を効果的に保護しますが、何らかの理由でキャッシュ全体がサービスを提供できない場合、すべてのリクエストが到着します。ストレージ層、ストレージ層への呼び出し数が大幅に増加し、ストレージ層もハングアップします。キャッシュ雪崩の英語の説明は「running bison」です。これは、キャッシュ層がクラッシュした後、疾走するバイソンのように同時トラフィックがバックエンド ストレージに大量にアクセスすることを意味します。
キャッシュなだれを簡単に理解すると、新しいキャッシュが到着していない期間(キャッシュは正常に取得される)に、元のキャッシュに障害が発生する(またはデータがキャッシュにロードされない)ことが原因で発生します。 Redis から (以下に示すように) すべてのキャッシュにアクセスする必要があります すべてのリクエストはデータベースのクエリに送信されるため、データベースの CPU とメモリに多大な負荷がかかり、深刻な場合には、データベースのダウンタイムやシステム クラッシュが発生する可能性があります。
キャッシュ エラーは次のとおりです。
この問題が存在するシナリオの 1 つは次のとおりです。キャッシュ サーバーがまたは、一定期間内に大量のキャッシュが障害を起こす可能性があり、障害が発生すると大量のデータがDBに直接アクセスすることになり、DBに大きな負荷がかかります。
キャッシュに障害が発生した場合の雪崩現象は、基盤となるシステムに重大な影響を与えます。では、この問題に対する解決策は何でしょうか?
解決策
1) Redis クラスターと DB クラスターの高可用性を設定し、Redis がダウンした場合は、すぐに別のマシンに置き換えることができます。これにより、いくつかのリスクを防ぐことができます。
2) ミューテックス ロックを使用する
キャッシュの有効期限が切れたら、ロックまたはキューイングを通じてデータベースを読み書きするスレッドの数を制御します。たとえば、1 つのスレッドのみがデータのクエリと特定のキーのキャッシュの書き込みを許可され、他のスレッドは待機します。スタンドアロンマシンの場合はsynchronizedやlockで解決できますが、分散環境の場合はredis setnxコマンドで解決できます。
3) キーごとに異なる有効期限を設定して、キャッシュ無効化時点の一貫性をなくし、均等な分散を実現することができます。
4) 期限切れにしない
Redis で永続的な非期限切れ設定を設定すると、ホット スポットがなくなります。つまり、物理的に期限切れになりません。
5)、リソース保護
Netflix の hystrix を使用すると、さまざまなリソースのスレッド プールを分離して、メイン スレッド プールを保護できます。
以上がレディスアバランチとはの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。