「データ集約型アプリケーションシステム設計」の研究ノート - 第5章データ・レプリケーション

データレプリケーション

からマスターコピー

1、コピーの主要な原則:

  1. マスターコピーとしてコピーを指定します。顧客はデータベースに書き込む場合、データは最初にローカルでプライマリコピーに書き込まれます。

  2. マスターコピーは、ログデータのコピーからそれを変更するために送信されます。ローカルの変更ログへのアプリケーションの各コピー。厳密に同じ書かれたオーダーのマスター・コピーを維持します。

  3. ときに、クライアントがデータベースからデータを読み込み、マスターコピーのコピーから読み取ることができますが、唯一のマスターコピーに書かれて書き込むことができます。

2、同期および非同期レプリケーション

レプリケーション:クライアントがマスターノードへの更新を送信するには、マスターノードは、ノードから送信されたデータを更新し、更新、マスターノードによってクライアント最後の更新完了通知が完了した後にノードへのマスターノード。

半同期:つのノードが同期されてから、他のノードが非同期です。同期から、別のノードから同期モードへとき故障したノード。これは、少なくとも2つのノードが最新のデータを持っているがあることを保証します。

完全な非同期:良いシステムのスループット性能が、その永続的なデータを保証することはできません。

3、ノードから新しい構成

単純なコピー、異なるノード上の時間データの異なる点がある起こす場合、コピーを増やします。クライアントがまだデータのマスターコピーにデータを書き込んで保たれているので常に変化しています。

ノンストップ、途切れのないデータサービスの場合、ノードから増やします。

  1. ある時点で、マスターノードのデータ・コピーの一貫性のスナップショットを生成します。

  2. このスナップショットは、スレーブノードにコピーします。

  3. マスターノード一貫したスナップショット変更履歴を要求するノードからデータ接続後。

  4. キャッチアップとして知られているこれらのデータノード・アプリケーションの変更、から。

図4に示すように、処理ノード障害

  • ノード障害から:ノードのハードディスクから受信した変更ログデータを保存します。ノードから障害が発生する前に、トランザクションの最終合計を知ることができ、このトランザクション要求後のデータ変更の主なノードに接続され、追われます。

  • マスターノード障害:スイッチングノード。マスターノードのアップグレードからノードを選択します。また、クライアントは新しいプライマリノードに要求を送信し、更新する必要があります。

    自動切替ステップ:

    1. タイムアウト機構、頻繁にノード間で送信されるハートビートメッセージをマスターノードに障害が発生したことを確認します。

    2. 新しい予備選挙:問題について合意。

    3. システムは、元のプライマリノードは、ノードから格下げされ、新しいマスターノードを承認していることを確認する必要があります:効果へのプライマリノードは、そのようにシステムを構成します。

5、達成するためにログのコピー

  • ステートメントベースのレプリケーション:各ログレコードのマスターノードとしてノードから送信された操作命令書き込み要求。

    適しシーン:非決定論文、入手可能なデータに応じて、文の副作用があります。

  • 先行書き込みログ送信に基づく:データベースに書き込まれたすべてのバイトが記録され、ログが別のノード上でまったく同じコピーを使用して構築することができます。欠点は、密結合とストレージエンジンで、その結果、ログの最下部です。マスターノードから、ソフトウェアのアップグレード、ダウンタイムの異なるバージョンを実行することはできません。

  • ベースのレプリケーションの論理行をログ:ログをコピーして、別の形式でストレージエンジンを記録。論理ログとストレージエンジンのロジックのデカップリング。

  • データ変更が発生したデータベース、アプリケーションレベルのコードの実行:に基づいて、レプリケーション・トリガー。

6、レプリケーションの遅れの問題

  • 自分の書き込みを読んで、ユーザーご自身の投稿の内容を表示し、データを提出します。しかしながら、可能なスレーブノードからデータを読み取るとき。新しいデータは、ユーザーエクスペリエンスに影響を与え、ノードから到着しない場合があります。書き込み後読み取り一貫性は、ページをリロードするようにユーザーを保証し、常に最近提出した、独自の更新を確認することができます。

    プログラム:

    ユーザがコンテンツを修正することができるアクセスする場合1.のみマスタノードから読み出します。あなたは、情報が変更される可能性があります知っている方法が必要です。

    2.トラック時間が最後に更新します。1分の更新後にした場合、それは常にマスターノードに読み込まれます。そして、ノードからのずれの程度をモニター。

    3.クライアントが要求にタイムスタンプを含むことができ、サービスの提供を確保するためのシステムは、タイムスタンプを読んで含まれている、とされていない場合、別のコピーに対処します。質問:クロスデバイスの一貫性。

  • 読み取り単調マスターノードA、Bにデータを書き込むため、ユーザは、この時点で別のユーザが二回読み取ります。まず、ユーザAにより書き込まれたデータを読み取るために、ノードからデータを書き込まれた読み取り ノードの第二の訪問は、マスターノードの更新されたデータを受信していないことから、Bのユーザーは、単に何かを参照し、ロールバックかのように、姿を消しました。

    解決策:常に一定のコピーから、同じユーザーをお読みください。ID、ハッシュベースのアプローチではなく、ランダム選択のコピーなど。

  • 接頭一貫した読み取り順序が書き込まれた読み出し場合も、特定の注文要求に生じる書き込みのシリーズ。分散型データベースは、異なるパーティションは独立して、グローバルな書き込み順序は存在しません。

    ソリューション:どれが因果関係を完了するために、パーティションに引き渡された書き込み。

第二に、マルチマスターレプリケーション

1、アプリケーションのシナリオ

  • 複数のデータセンター:複数のデータセンター間でデータベースのコピー、災害復旧のために、ユーザーの配慮に近いです。各データセンター、マスタ・スレーブレプリケーション・スキーム内。データセンター間で、各マスターノードがマスターノード、他のデータセンターとのデータ交換を更新する責任があります。

  • オフラインクライアント操作:オフライン、ローカルユーザデータへの変更、デバイスが同期サーバーや他のデバイスと、再びオンラインです。データセンターとネットワークとの間のローカルデータベース、マルチマスタ複製かなりの時間同期に対応するプライマリノード。

  • 共同編集:より高速なコラボレーション効率が編集可能なサイズを小さくします。これは、マルチマスターレプリケーションの世代につながることができます。

図2に示すように、処理書き込みコンフリクト

競合を避ける:特定のデータの書き込み要求が同じマスターノードによって常にあります。特定のユーザーの個人情報などの特定のデータセンターを変更することもできます。マスターコピーからユーザごとに対応しています。

競合を解決するための原理:一貫した状態に収束しますあなたは、最終的な状態のデータのすべてのコピーが同じであることを確認する必要があります。

  • コンバージェンス・ソリューションの可能性のある方法:

  1. タイムスタンプ、または優先順位のユーザIDに基づいて、最終的な勝者を決定します。

  2. セットの優先順位のコピー。

  3. 結合値が書き込まれます。

  4. 情報の保持は、解決するために、アプリケーション層と競合します。これは、カスタムソリューションをユーザーに許可します。

第三に、何のレプリケーションマスタノードません

すべてのコピーが直接クライアントからの書き込み要求を受信できるように、マスターノードをあきらめます。

データベース・ノードの障害に書き込まれた場合は、プライマリ・ノードのレプリケーションモデルでのスイッチング動作を実行する必要はありません。ノード障害は、後で戻ってオンライン古いデータを読み取ることがあります。この問題を解決するためにすると、クライアントではなくコピーを複数に並列に送信されるリード要求のコピーを読んで、データを読み込みます。バージョン番号が更新される値を決定するために使用することができます。

1は、障害が発生したノードを修復するには:

  • 新しい値と古い値にデータを読み出す場合、更新された値は、下位ノードを書かれています。(修理を読む)短所:ほとんどのデータベース失われたデータの読み出しが検出されないことがあります。

  • バックグラウンド・プロセスは、コピー間の相違点を探し続け(抗エントロピー法)

2、読書成功したかどうかを判断するには:

n個のコピーが存在する場合、少なくともR必須クエリノードを読み取り、ノードwが確認書を必要とします。

W + R> Nが必要です。特定のノードが最新の値が含まれている中でこのように読みます。(クォーラム)

WおよびRは、W = N、R = 1に設定することができるどのくらいの負荷読み取り書き込むために、構成することができます。

3、緩いクォーラム:

必要性の高可用性シナリオでは、クライアントノードとネットワーク障害のノードたときには、仲裁に必要な数よりも少ないの応答につながりました。クライアントに書き込まれたルーズクォーラム値であれば、応答が正常wを書き込むことができるノードの数よりも大きいように、ノードNのノードに書き込むことができません。次に、ネットワークの問題の解決とは、元のノードに送信します。しかし、クライアントは必ずしも新しい値にノードrから読まれていません。

図4に示すように、データセンターの運用を横切ります。

1は、すべてのコピーに送られたが、唯一のローカルデータセンターからの確認を待っていることができます。

図2に示すように、専用データセンターとデータセンターとの間のローカル双方向、マルチマスターレプリケーション。

5、同時書き込み

同時に複数のクライアントを扱う複数のコピーが最終的に同じ内容に収束の間、すべてのコピーを書くための同時書き込みが必要。

1、最後の書き込みが勝ちタイムスタンプに各書き込み要求、先に書かれた各ノード破棄データを添付します。クライアントの成功に書き込まれたメッセージを送信しますが、データは破棄されますが、データの永続性を犠牲にしてそう。

2、因果関係および並行関係:AとBの操作は操作が発生した依存している場合、あるは事前発生関係。彼らが発生した場合は、お互いが知っている必要がない場合は、関係によって複雑になります。

同時実行関係解決アルゴリズム(P178例控除を):

  1. サーバーは、各プライマリキーのバージョン番号を維持します。メインキーは、新しい値を書き込み、新しい価値とバージョン番号を保存する際、バージョン番号はインクリメントされます。

  2. クライアントは、主キーを読み込みます。サーバーは、現在のバージョン番号とサーバーのすべての主キーの値を返します。

  3. クライアントは、この新しいバージョンに戻るには、主キーで書き込みサーバが含まれている前に、バージョン番号、および合併の新しい値を読み取ります。

  4. サーバはバージョン番号およびそれ以前のバージョンのすべての値をカバーし、書かれた受信すると、以降のすべての値を保存します。

合成値が同時に書き込まれます。新しいバージョンと古いバージョン番号をマージするデータは、重複部分を削除します。削除操作がマークされ、連結上消去する必要があります。

ベクトルのバージョン:複数のコピーは、バージョン番号のバージョン番号とマスターキーのコピーを保存することができます。書かれたコピーに別のコピーで読むことができます。データベースの決定は、カバーや並行処理値を残しておく必要があります。

 

おすすめ

転載: www.cnblogs.com/pihaochen/p/11350315.html