ザブアルゴリズムは、詳細な

       、高スループットを:飼育係は、その作者によると、一貫性の中核コピーとしてザブ(飼育係アトミックブロードキャスト)と呼ばれるプロトコルを使用していますが、これは完全に考慮にヤフーの特定の状況を取ることを特徴としている新興アルゴリズム、と言います低遅延、堅牢で、簡単ではなく、過度にそのスケーラビリティが必要です。以下は、契約の中核的なコンテンツの一部が表示されます:

また、この記事では、飼育係が達成するために、そのソースコードを議論するのではなくのみを使用コヒーレンス・プロトコルについて説明します

飼育係は、クライアントがあり実現し、サーバは、クライアント側は、分散ロック、選挙アルゴリズム、分散相互排除など、いくつかの特定のセマンティクスを提供します、ストレージサービス、サーバー側が一貫性のレプリケーションを提供し、構成します。コンテンツ、サーバ側データ・ストアのための記憶装置から状態のいくつかの詳細ではなく、データの内容自体、従って、小さな飼育係ファイルシステムとして使用することができます。格納されたデータの量が比較的少ない状態であり、全て大幅に通信遅延をなくし、メモリに完全にロードされてもよいです。

クラッシュServerのサーバーがデータ前の状態を「記憶」しなければならない、アカウントにフォールトトレランスを取って、再起動することができ、データを永続化する必要があるが、高スループット、ディスクIOシステムがボトルネックとなっている、その解決策は、キャッシュを使用することで、ランダムは、連続的な書き込みに書き込みます。

飼育係は、アカウントにメイン運用データの状態を取って、一貫性のある状態を確保するために、飼育係は、2つのセキュリティ属性(安全性)を提案しました

 

  • フルシーケンス(合計順):メッセージがBである前に、メッセージが送信される場合、すべてのサーバーは、同じ結果が表示されるはずです
  • 因果順序(因果的順序):メッセージがメッセージである場合は常に、Bの前に実行され、(Bは、につながる)Bの前に発生し、一緒に送信されます。
両方のセキュリティ属性を確保するために、飼育係は、TCPプロトコルとリーダーを使用します。因果シーケンスリーダーによって問題を解決するために、全順序メッセージの特性(最初に来る最初の起動)ことを保証するためにTCPプロトコルを使用して、まずリーダーは最初の実行します。そのためのリーダーの、飼育係のアーキテクチャは、次のようになります。マスタースレーブモードではなく、クラッシュしました。このモードでマスター(リーダー)は、そのため、飼育係は、システムの堅牢性を確保するために、リーダー選挙アルゴリズムを導入しました。飼育係は、2段階に分けて作品全体を総括します:
  • アトミックブロードキャスト
  • リーダー選挙

1.アトミックブロードキャスト

リーダーと同時に、クライアントノードがリーダー要求ノードによって実行されるリーダーに接続されている場合、更新要求があれば、他のノードは、「フォロワー」と呼ばれているノードが存在する。フォロワノードに接続されている場合、ノードは、リーダーを実行するための要求を転送する必要があります。1:ただし、最新のデータを読み取るために必要な場合は、クライアント・フォロワ・データから直接読み取る、リクエストを読んで、それはリーダーノードから必要であるが、飼育係比2を読み書きするように設計されています。
 
リーダーは、二段階方式の簡易版を提出するが、他の二段階送信要求フォロワは異なると異なる2に提出します。
  • 唯一のリーダーがあるため、リーダーは受け入れられるフォロワーに(他のリーダー干渉)要求を送信しません
  • あなたはフォロワーのすべてが過半数に限り、正常な応答ある必要はありません。
素人の観点から、2F + 1つのノードは、ノードがFを可能に失敗がある場合。これらのノードの交差点で、リーダーを切り替えたときに任意の二つの交差点の大多数がなければならないので、現在のシステムの最新のステータスを取得することができます。大部分が存在しない場合(以下F + 1よりもノード生存)アルゴリズムの処理を終了します。しかし、一つの例外があります:
クラッシュあなたはリーダーのための作業を続けることができない場合、あなたは、B、Cの3つのノードを持っている場合、リーダーは、Aがリーダー、Aであるので、Cは依然として過半数を構成し、Bクラッシュ場合は、A、Cが正常に動作し、ありますこれは、大多数の選挙を構成することはできません。

2.リーダー選挙

リーダー選挙Paxosアルゴリズムは、単にリーダー選挙がもたらす問題のいくつかを検討するために、他のブログを参照してください特定のアルゴリズム・プロセスに主に依存しています。最大の問題は、リーダーの選挙は、「古いものと新しいインタラクティブ」の問題、新しいリーダーリーダーが古い状態を継続するかどうかで遭遇しました。ここで八尾アン古いリーダークラッシュタイミングが点在状況:
  1. 古いリーダークラッシュする前にCOMMITで(ローカルに提出されました)
  2. リーダーは、クラッシュ後に古いでCOMMITが、要求をコミットするには、いくつかのフォロワーを受信します
あなたが知っている最初の場合、これらのデータは古いリーダー、古いリーダーのリブート、および一貫性のある状態を維持するために、ローカルおよび新しいリーダーからデータを削除するために同期させる必要があります。
後者の場合は、新しいリーダーが古いリーダーから提出された最新のデータを取得するために大部分を渡す必要があります
2人のリーダーは、ソリューションはリーダーが各メッセージID、飼育係内で参加している、アルゴリズム・プロセスが失敗したリードとして古いリーダーを再起動した後、あなたはまた、要求を送信し続ける可能性があり、リーダーとして自分自身を考えることが完了していないため、存在してzxid呼ば、zxidは64ビット数であり、まだリーダーの上位32ビットエポックは、各時間リーダー変換をインクリメントし、メッセージ番号の下位32ビットが0リーダー変換から再番号付けされるべきです。zxidことで、フォロワーを簡単に古いリーダーの要求を拒否し、要求が古いリーダーから来ている見つけることができます。
 
また、ログデータベースと同じレコードを必要とし、補償操作をサポートするための飼育係のデータストレージので、古いリーダーでデータ消去(ケース1)、があるため。

3.ザブとパクシ

著者は、パクシパクシが完全に命じされていないため、ザブザブとパクシ同じではありませんが、それだけがそれを確実にするためのシーケンスを使用していないと信じています:
複数の指導者たちは、可能性があるため
二つの問題が発生した特定のインスタンスの値を提案しています。
まず、提案が競合することができます。パクシは競合提案を検出し、解決するために投票用紙を使用しています。 
第二に、プロセスはまた、コミットされた値グレをFiにできるようにする必要があり、指定されたインスタンスの数がコミットされたことを知るには十分ではありません。
Paxosアルゴリズムは、実際の要求のための間の論理的な関係ではなく、データのみの間でシーケンス全体を考慮したが、少数の人々が直接アルゴリズムが簡略化および最適化を通過しますパクシ。
通常、リーダーの存在下で、一の段階(フェーズ2)に還元することができるされているそのうちの一つ、いくつかのPaxos簡略化した形態、が存在するであろう。一つだけのステージのシナリオは、堅牢なリーダーを必要とし、したがって、焦点は、プロセスの学習者が考慮して、リーダーの選挙となったが、また、ステージは、このように、パクシは2つの段階に簡素化され、「学習します」 :
  • フェーズ2の前に
  • 学びます
私たちは大半が成功するために学び考えると、これは実際にザブ契約です。Paxosアルゴリズムは、あまり解像度を考えることを学ぶ、選挙プロセスの制御性を強調した強調され、ザブは、単にサプリメントを行いました。
それは言われていた前に、それは絶対的ですが、すべての分散アルゴリズムは、パクシ形に簡略化されているが、多くの場合、それは本当ですが、ザブの著者は、この声明に同意するかどうか私は知らないのですか?

4.終了

この記事では、プロトコル、アルゴリズム解析飼育係の観点から考えるされるのではなく、飼育係のバージョンが変更されるため、本明細書に記載のシーンが持つかもしれ実装するためのソースコードを解析して対応する実装を見つけることができません。別の紙にも事実を公開しようとした:ザブはパクシの簡略化した形です。
[参考文献]
  • シンプルな全順序放送プロトコル
  • パクシ

おすすめ

転載: www.cnblogs.com/aibabel/p/10973596.html