技術共有

7. Redis マスター/スレーブ レプリケーション プロセス

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Redis のマスター/スレーブ レプリケーション プロセス

Redis ノード (スレーブ ノード) がマスターからのデータのコピーを続行できるようになるまで、slaveof 127.0.0.1 6380 と同様の命令を受信すると、通常、次のプロセスが実行されます。

1. マスターアドレスを保存する

スレーブは、slaveof コマンドを受信すると、すぐに新しいマスター アドレスを保存します。

2. 接続を確立する

スレーブはスケジュールされたタスクを維持し、マスターとのソケット接続の確立を試みます。接続を確立できない場合は、接続が成功するか、slaveof no one コマンドが受信されるまで定期的に再試行されます。

3. スレーブが ping コマンドを送信する

接続が正常に確立されると、スレーブは最初の通信のために ping コマンドを送信します。スレーブがマスターからの応答を受信しない場合、スレーブは積極的に切断し、次にスケジュールされたタスクが接続を再試行します。

4. スレーブの身元を確認する

マスターはスレーブから ping コマンドを受信すると、すぐには応答せず、最初に認証を実行します。検証が失敗した場合は、接続を拒否するメッセージが送信され、検証が成功した場合は、接続成功の応答がスレーブに送信されます。

5. 粘り強さをマスターする

最初の通信が成功すると、スレーブはデータ同期リクエストをマスターに送信します。マスターはリクエストを受信すると、子プロセスをフォークアウトして、子プロセスを非同期で即座に永続化できるようにします。

6. データ送信

永続化が完了すると、マスターは子プロセスをフォークアウトし、子プロセスがデータをスレーブに非同期的に送信できるようにします。 スレーブは、受信したデータをローカル永続ファイルに継続的に書き込みます。

スレーブ データ同期プロセス中、マスターのメイン プロセスはクライアントからの書き込み操作を継続的に受け入れ、新しいデータをマスター メモリに書き込むだけでなく、同期キャッシュにも書き込みます。マスターの永続性ファイル内のデータが送信された後、マスターは同期キャッシュ内の新しいデータをスレーブに送信し、スレーブはそれをローカルの永続性ファイルに書き込みます。データの同期が完了しました

7. スレーブはメモリデータを復元します

スレーブとマスター間のデータ同期が完了すると、スレーブはローカル永続ファイルを読み取り、ローカル メモリに復元し、外部読み取りサービスを提供します。

8. 継続的な増分レプリケーション

スレーブが外部サービスを提供するプロセス中、マスターは、マスターとスレーブのデータの一貫性を確保するために、増分方式で新しいデータをスレーブに継続的に送信します。