1. 高い同時実行性メカニズム
Redis はシングル スレッドに基づいており、スタンドでホストできることがわかっています。 -alone モード 数万程度しかありませんが、Redis のマスター/スレーブ アーキテクチャと読み取りと書き込みの分離により、ビッグ データ下での数十万の高い同時リクエストをどのように改善するか。
ビデオ コースの推奨事項 →: 「数千万のデータに対する同時実行ソリューション (理論と実践)」
1. マスター/スレーブ レプリケーション
Redis のマスター/スレーブ レプリケーションの構成は強調されませんが、主にマスター/スレーブ レプリケーションの原理とプロセスに依存します。マスターホストは管理者として必要であり、複数のスレーブマシンを構築します。スレーブ スレーブが起動しようとすると、マスター ホストにコマンド PSYNC を送信しますが、このときスレーブ スレーブが再接続されると、スレーブ スレーブが持っていないデータがマスター ホストからコピーされます。初めて接続すると、完全な再同期がトリガーされます。トリガー後、マスターホストはバックグラウンドでプロセスを開始し、RDBスナップショットファイルを生成すると同時に、この期間の書き込み操作をキャッシュに保存し、RDBファイルが生成されると、RDBファイルを送信します。スレーブ マシンにファイルを送信すると、スレーブ マシンはファイルを取得します。その後、ファイルは最初にディスクに書き込まれ、次にメモリにロードされます。最後に、マスター ホストもメモリにキャッシュされたデータをスレーブ マシンに送信します。同じ時間です。マスター/スレーブ間のネットワーク障害が発生し、複数のスレーブが再接続した場合、マスターは 1 つの RDB のみを再起動してすべてのスレーブにサービスを提供します。 [関連する推奨事項: Redis ビデオ チュートリアル ]
ブレークポイントの再開: マスターとスレーブにレプリカ オフセットがあり、その中にマスター ID があり、オフセットはネットワーク障害後にスレーブが再接続すると、対応する最後のレプリカ オフセットを見つけてコピーします。対応するオフセットが見つからない場合は、完全な再同期がトリガーされます。
①レプリケーションの完全なプロセス
(1) スレーブ ノードが開始され、マスター ノードのホストと IP を含むマスター ノードの情報のみが保存されますが、レプリケーション プロセスは実行されません。 start
マスター ホストと IP はどこから来ますか? redis.conf の smileof 設定の
(2) スレーブ ノード内には、新しいホストがあるかどうかを確認するスケジュールされたタスクがあります。マスターノードに接続し、毎秒コピーします。それが見つかったら、マスターノードとのソケットネットワーク接続を確立します。
(3) スレーブノードはマスターノードに ping コマンドを送信します。
(4) パスワード認証。マスターが requirepass を設定すると、スレーブ ノードは認証のために masterauth パスワードを送信する必要があります。
(5) マスター ノードは初めて完全なレプリケーションを実行し、すべてのデータをスレーブ ノードに送信します。
(6) マスター ノードは、コマンドの書き込みを継続し、それらをスレーブ ノードに非同期でコピーします。
②データ同期関連するコア メカニズム
は、スレーブが初めて msater に接続するときに実行される完全なコピーを指します。そのプロセスの詳細なメカニズム
(1) マスターとスレーブの両方がオフセットを維持します。
マスターは自身のオフセットを継続的に蓄積し、スレーブも自身のオフセットを継続的に蓄積します
スレーブは自身のオフセットを毎秒マスターに報告し、マスターも各スレーブのオフセットを保存します
これは、完全なレプリケーションに特に使用されるという意味ではありません。主な理由は、両方のスレーブが同じであることです。マスターとスレーブは、相互間のデータの不一致を知るために、それぞれのデータのオフセットを知る必要があります。
(2) バックログ
マスター ノードにはバックログがあります。デフォルトのサイズは 1MB です。
マスター ノードがデータをスレーブ ノードにコピーすると、バックログにもデータのコピーが同期的に書き込まれます。
バックログは主に完全レプリケーションに使用されます。中断後の増分レプリケーション
(3) マスター実行 ID
info サーバー、マスター実行 ID
が表示されます。マスター ノードが再起動したり、データが変更された場合、ホスト IP に基づいてマスター ノードを見つけることは信頼できません。 , その後、スレーブ ノードは異なる実行 ID に従って区別される必要があります。実行 ID が異なる場合は、完全なコピーが作成されます。
実行 ID を変更せずに Redis を再起動する必要がある場合は、redis-cli デバッグを使用できますreload command
(4)psync
スレーブノードはpsyncを使用してマスターノードからコピーし、psync runid offset
マスターノードは自身の状況に応じて応答情報を返します。完全レプリケーションをトリガーするのは FULLRESYNC runid offset である可能性があります。または、CONTINUE が増分コピーをトリガーする可能性があります
③フル コピー
(1) マスターは bgsave を実行し、rdb スナップショット ファイルをローカルに生成します
(2) マスター ノードは rdb スナップショット ファイルをスレーブ ノードに送信します rdb コピー時間が 60 秒 (repl-timeout) を超える場合、ノードはコピーが失敗したと判断します。このパラメータは適切に調整できます。
(3) ギガビット ネットワーク カードを搭載したマシンの場合、通常 1 秒あたり 100MB、6G のファイルが転送され、60 秒を超える可能性があります
(4) マスター ノードが RDB を生成しているとき、すべての新しい書き込みコマンドはメモリにキャッシュされます。スレーブ ノードが RDB を保存した後、新しい書き込みコマンドはスレーブ ノードにコピーされます。
(5) client-output -buffer-limit スレーブ 256MB 64MB 60、コピー中にメモリ バッファが 64MB 以上を消費し続けるか、一度に 256MB を超える場合、コピーを停止し、コピーは失敗します。
(6) スレーブ ノードが rdb を受信した後、古いデータ バージョンに基づいて外部サービスを提供しながら、自身の古いデータをクリアし、メモリ内の rdb を自身に再ロードします。
(7) スレーブ ノードが AOF をオンにすると、BGREWRITEAOF が即座に実行され、 AOF は書き換えられます
rdb の生成、ネットワーク経由の rdb コピー、スレーブ古いデータのクリーニングとスレーブの aof の書き換えには非常に時間がかかります
コピーされたデータの量が 4G ~ 6G の場合の場合、フル コピー時間は 1 分半から 2 分かかる可能性があります。
④増分レプリケーション
(1) フル レプリケーション プロセス中にマスターとスレーブのネットワーク接続が切断された場合、スレーブがマスターに再接続すると、増分レプリケーションがトリガーされます
(2) マスターは、自身のバックログから失われたデータの一部を取得し、スレーブ ノードに送信します。デフォルトのバックログは 1MB
(3) msater は、スレーブによって送信された psync のオフセットに基づいてバックログからデータを取得します
⑤ハートビート
マスター ノードとスレーブ ノードは相互にハートビート情報を送信します
マスターはデフォルトで 10 秒ごとにハートビートを送信し、スレーブ ノードは 1 秒ごとにハートビートを送信します
##⑥非同期レプリケーション#マスターが書き込みコマンドを受信するたびに、データを書き込むようになりました内部的に送信し、スレーブ ノードに非同期で送信します。
2. 読み取りと書き込みの分離: マスターは書き込み操作を担当し、スレーブはマスターによるアクセス クエリの削減を支援する責任を負います。
##2. 高可用性メカニズム
高同時実行性の場合、複数のクラスターに 1 つのマスターと複数のバックアップが装備されます。は 1 つのホストのみです。マスターがダウンし、システム全体が書き込み操作を実行できず、スレーブがデータを同期できない場合、システム全体が麻痺し、システム全体が使用できなくなります。 Redis の高可用性メカニズムはセンチネル メカニズムです。センチネルは Redis クラスターの重要なコンポーネントであり、クラスターの監視、情報通知、フェイルオーバー、構成センターを担当します。
(1) クラスター監視。Redis マスタープロセスとスレーブプロセスが正常に動作しているかどうかを監視します。(2) メッセージ通知。Redis インスタンスに障害が発生した場合、センチネルはアラーム通知としてメッセージを送信します。管理者に送信
(3) フェイルオーバー、マスター ノードがハングアップした場合、自動的にスレーブ ノードに転送されます (4) 構成センター、フェイルオーバーが発生した場合、クライアントに新しいマスター アドレスを通知します
Sentinel それ自体が分散されており、クラスターとして機能するため、連携して動作する必要があります。
マスター ノードがダウンしていることが判明した場合、分散選挙を伴う監視員の過半数の同意が必要になります。
3. 高可用性と高同時実行性に起因するデータ損失の問題
(1) 非同期レプリケーションによって発生するデータ損失
理由は、マスター -> です。スレーブのレプリケーションは非同期であるため、一部のデータはマスターがクラッシュする前にスレーブにコピーされず、データのこれらの部分が失われる可能性があります。 (2) スプリット ブレインによるデータ損失スプリット ブレイン、つまりマスターが配置されているマシンが突然通常のネットワークから外れ、他のスレーブ マシンに接続できなくなりますが、実際、マスターはまだ実行中です。この時点で、センチネルはマスターがダウンしていると判断し、選挙を開始して他のスレーブをマスターに切り替える可能性があります。現時点では, クラスターには 2 つのスレーブが存在します。マスターがあり、いわゆるスプリット ブレインです。この時点でスレーブがマスターに切り替わりますが、クライアントには切り替える時間がない可能性があります。 したがって、古いマスターが再び復元されると、古いマスターは独自のスレーブとして新しいマスターにハングされます。データは消去され、新しいマスターから再度データがコピーされます。 非同期レプリケーションとスプリット ブレインによるデータ損失の解決策min-slaves-to-write 1 min-slaves-max-lag 10少なくとも 1 つのスレーブが必要です。データ レプリケーションと同期の遅延は 10 秒を超えることはできません1 回の場合スレーブ、データ レプリケーション、および同期の遅延が 10 秒を超えると、この時点でマスターはリクエストを受信しなくなります
上記 2 つの構成により、非同期レプリケーションとスプリット ブレインによるデータ損失を軽減できます
(1) 非同期レプリケーションによるデータ損失を軽減します
min-slaves-max-lag を使用する構成を変更すると、スレーブ コピー データと ACK 遅延が長すぎると、マスターがダウンした後に大量のデータが失われる可能性があると考えられ、書き込み要求が拒否されます。これにより、一部のデータが失われるのを防ぐことができます。スレーブによるデータ損失を制御可能な範囲で低減する
(2) スプリットブレインによるデータ損失を低減
マスタがスプリットブレインの場合この構成により、指定された数のスレーブにデータを送信し続けることができず、スレーブが 10 秒以上自分自身に ack メッセージを送信しない場合、クライアントの書き込みが確実に行われます。リクエストは直接拒否されます
このようにして、スプリット ブレイン後の古いマスターはクライアントからの新しいデータを受け入れなくなり、データ損失が回避されます。いずれかのスレーブとの接続が失われ、10 秒後にどのスレーブも自身に ACK を返さない場合、そのリクエストは拒否されます。新しい書き込みリクエスト
したがって、スプリット ブレイン シナリオでは、最大 10 秒間のデータが失われた
プログラミング関連の知識については、
以上がRedis の高可用性と高同時実行メカニズムの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Redis是现在最热门的key-value数据库,Redis的最大特点是key-value存储所带来的简单和高性能;相较于MongoDB和Redis,晚一年发布的ES可能知名度要低一些,ES的特点是搜索,ES是围绕搜索设计的。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了关于redis的一些优势和特点,Redis 是一个开源的使用ANSI C语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式存储数据库,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis Cluster集群收缩主从节点的相关问题,包括了Cluster集群收缩概念、将6390主节点从集群中收缩、验证数据迁移过程是否导致数据异常等,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis实现排行榜及相同积分按时间排序,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了关于原子操作中命令原子性的相关问题,包括了处理并发的方案、编程模型、多IO线程以及单命令的相关内容,下面一起看一下,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了bitmap问题,Redis 为我们提供了位图这一数据结构,位图数据结构其实并不是一个全新的玩意,我们可以简单的认为就是个数组,只是里面的内容只能为0或1而已,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis实现排行榜及相同积分按时间排序,本文通过实例代码给大家介绍的非常详细,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了关于实现秒杀的相关内容,包括了秒杀逻辑、存在的链接超时、超卖和库存遗留的问题,下面一起来看一下,希望对大家有帮助。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。
