ホームページ >データベース >Redis >Redis でホットスポット キーはどのように生成されますか?の解き方?

Redis でホットスポット キーはどのように生成されますか?の解き方?

青灯夜游
青灯夜游転載
2021-09-22 20:18:194871ブラウズ

次の記事では、Redis のホットスポット キーを理解し、ホットスポット キーが生成される理由、ホットスポット キーを見つける方法、およびホットスポット キーの解決策を紹介します。

Redis でホットスポット キーはどのように生成されますか?の解き方?

ホット キーの原因

1. ユーザーが消費するデータは、実際のデータよりもはるかに大きいです。 generated

ホット キーの問題は、ある瞬間に Redis 上の固定キーにアクセスするリクエストが大量に発生し、キャッシュの故障が発生し、リクエストがすべてヒットすることです。 DB は、キャッシュ サービスと DB サービスを圧倒し、アプリケーション サービスの可用性に影響を与えます。 [関連する推奨事項: Redis ビデオ チュートリアル ]

最も一般的なのは、Weibo での人気の検索 (XX 有名人の結婚/浮気など) です。すると、○○星に関するキーが瞬時に増加し、ホットデータ問題が発生します。 Weibo も時々クラッシュします。

同様に、広く公開され視聴されるホットなニュース、ホットなコメント、有名人のライブ放送なども、読む量が増えて書く量が減るという典型的なシナリオでも、ホットな問題を引き起こすことになります。

2. シャーディングのリクエストが集中し、単一サーバーのパフォーマンス制限を超えます

サーバー側のデータを読み込んでアクセスする場合、 シャーディングを実行すると、特定のホストサーバー上の対応するキーにアクセスすることになり、サーバーの制限を超えるとホットキーの問題が発生します。

#ホットキー問題の危険性

Redis でホットスポット キーはどのように生成されますか?の解き方?

##1. トラフィックが集中し、上限に達します。物理ネットワークカード。

特定のホットスポット キーのリクエストが、特定のホストのネットワーク カードの上限を超えると、トラフィックが過度に集中し、サーバー内の他のサービスが続行できなくなります。 。

2. リクエストが多すぎるため、キャッシュ シャーディング サービスが無効になります。

ホットスポットが集中しすぎて、ホットスポット キーのキャッシュが大きすぎて現在のキャッシュ容量を超えると、キャッシュ シャーディング サービスが過負荷になります。

3. DB の故障により、ビジネスに雪崩が発生します。

キャッシュサービスがクラッシュし、その際に別のリクエストが発生した場合、バックグラウンドDBにキャッシュされますが、DB自体の性能が低いため、リクエストが浸透しやすくなります。大きなリクエストに直面すると、この現象が発生し、さらにアバランシェ現象を引き起こし、機器のパフォーマンスに重大な影響を及ぼします。

#ホット キーの検出

1. ビジネス経験を活用して、どのキーがホットであるかを推定します 実際、この方法はかなり実現可能です。例えば、フラッシュセール中の商品であれば、その商品のキーはホットキーであると判断できる。欠点は明らかで、すべての企業がどのキーがホット キーであるかを推定できるわけではありません。

#2. クライアント側で収集#この方法は、redis を操作する前にデータ統計のコード行を追加する方法です。データを収集するにはさまざまな方法があり、外部通信システムに通知メッセージを送信することもできます。欠点は、クライアント コードへの侵入を引き起こすことです。

3. プロキシ層での収集

#########################################クライアント######## ############################プロキシ##################### redis1redis2
redis3
##一部のクラスター アーキテクチャは次のとおりです。プロキシには、統一された入り口である
Twemproxy

を使用できます。収集とレポートはプロキシ レイヤーで実行できますが、すべての Redis クラスター アーキテクチャにプロキシがあるわけではないという欠点は明らかです。

4. Redis 組み込みコマンド

    monitor コマンド
  • を使用します: このコマンドはキャプチャできますリアルタイム Redis サーバーはコマンドを受信し、ホット キーをカウントするコードを書き込みます。もちろん、redis-faina など、使用できる既製の分析ツールもあります。ただし、同時実行性が高い条件下では、このコマンドにはメモリが突然増加する潜在的な危険があり、redis のパフォーマンスも低下します。
  • hotkeys パラメータ
  • : redis 4.0.3 では redis-cli のホットキー検出機能が提供されており、redis-cli 実行時に –hotkeys オプションを追加するだけです。ただし、このパラメータを実行するとき、キーの数が多いと実行が遅くなります。

5. 自己キャプチャ パケットの評価Redis クライアントは、TCP プロトコルを使用してサーバーと対話します。

RESP

を使用します。ポートを監視し、RESP プロトコル ルールに従ってデータを解析し、分析を行うための独自のプログラムを作成します。欠点は、開発コストが高いこと、メンテナンスが難しいこと、パケット損失の可能性があることです。 上記の 5 つのオプションには、それぞれ独自の長所と短所があります。ビジネス シナリオに基づいて決定してください。

ホットスポット キーの解決策

1. 2次キャッシュを使用しますたとえば、use

ehcache

spring cache、または HashMap も機能します。ホット キーを検出したら、そのホット キーをシステムの JVM にロードします。 この種のホット キー リクエストの場合、redis レイヤーにアクセスせずに、jvm から直接取得されます。

この時点で同じキーに対するリクエストが 100,000 件あると仮定すると、ローカル キャッシュがない場合、これらの 100,000 件のリクエストは同じ Redis に直接送信されます。

次に、アプリケーション層に 50 台のマシンがあると仮定します。OK、jvm キャッシュもあります。この 100,000 リクエストは均等に分散されており、各マシンには 2,000 リクエストがあり、JVM から値が取得されてデータが返されます。これにより、何十万ものリクエストが同じ Redis に送信される状況が回避されます。


2. 読み取りと書き込みの分離読み取りと書き込みの分離とは、

Write

であるリクエストを ## に送信することです。 # Master モジュール内で、Read のリクエストが ReadOnly モジュールに送信されます。 モジュール内の読み取り専用ノードはさらに拡張でき、このキーを複数の Redis に保存できます。ホット キー リクエストが受信されると、バックアップのある Redis サーバーをランダムに選択し、値にアクセスしてデータを返します。これにより、ホットリーディングの問題が効果的に解決されます。

読み取りと書き込みの分離には、読み取りホットスポット機能の柔軟な拡張、多数のホットスポット キーの保存機能、クライアントの使いやすさといった利点もあります。

プログラミング関連の知識について詳しくは、

プログラミング ビデオ

をご覧ください。 !

以上がRedis でホットスポット キーはどのように生成されますか?の解き方?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。