長方形クラスRectangleを定義します:(知識ポイント:オブジェクトの作成と使用)

Quorumの定義は次のとおりです。N個のコピーがあり、W個のコピーで更新操作wiが正常に更新され、更新操作wiが成功したと見なされ、今回正常に送信された更新操作に対応するデータが呼び出されたとします。 」読み取り操作の場合、更新されたデータを読み取るには少なくともR個のコピーが必要です。このうち、W + R> N、つまりWとRは重複しています。一般的に、W + R = N + 1です。

N =保存されたデータコピーの数

W =正常な更新にはコピーが必要

R =読み込まれる1つのデータオブジェクトでアクセスされるコピーの数

定足数は、少なくともN + 1-wのデータのコピーを読み取る必要があることに限定されます。

たとえば、10個のコピーを保持し、一度に3個を正常に更新した場合、少なくとも8個のデータのコピーを読み取る必要があります。これにより、最新のデータを確実に読み取れます。

定足数アプリケーション

クォーラムメカニズムは強い整合性を保証できません。つまり、すべてのユーザーまたはノードが、正常に送信された最新のコピーデータをいつでも読み取ることができます。

Quorumメカニズムの使用は、正常に送信された最新のバージョン番号を取得するメタデータサービスと連携して、正常に送信された最新のバージョン番号を特定し、読み取られたデータから最新の書き込まれたデータを確認できるようにする必要があります。

クォーラムは、分散システムで一般的に使用されるメカニズムです。これは、データの冗長性と結果の一貫性を保証するために使用される投票アルゴリズムです。クォーラムメカニズムのアプリケーションは、Paxos、Raft、ZooKeeper's Zabなどのアルゴリズムで見ることができます。

Paxosアルゴリズムの関連概念

Paxosプロトコルでは、3つのタイプのノードの役割、つまり提案者、承認者、および学習者があり、発行者としてクライアントもあります。技術写真

上記の3種類の役割は論理的に分割されているだけであり、実際には、ノードはこれら3種類の役割を同時に果たすことができます。

提案者

複数の提案者が存在する可能性があります。プロセスの最初に、提案者は価値であるモーションを提案します。いわゆる値は、「変数の値を新しい値に変更する」など、プロジェクト内の任意の操作です。Paxosの合意は、これらの操作は値として抽象化されます。

提案者が異なれば、値が異なる場合や矛盾する場合もあります。たとえば、提案者が「変数Xを1に設定」することを提案し、別の提案者が「変数Xを2に設定する」ことを提案しますが、同じラウンドのPaxosプロセスでは、値は1つだけです承認されました。

アクセプター

クラスタにはN個のアクセプタがあり、アクセプタは完全に等しく独立しています。提案者が提案する値は、合格する前に半分(N / 2 + 1)のアクセプタによって承認される必要があります。

学習者

学習者は選挙には参加しませんが、承認された値を学習します。Paxosでは、学習者は主に関連するステートマシンの同期プロセスに参加します。

ここで、LeanerのプロセスはQuorum評議会メカニズムを参照しています。値は、W = N / 2 + 1でAcceptorによって承認される必要があります。渡された値を学習するため。たとえば、次のとおりです。

私は10人のAccpetorがいて、少なくとも6つの同一の値、最大10の同一の値を読み取ります。つまり、投票数が最も多い結果が選択されます。

クライアント発行者

発行者としてのクライアントの役割は、変更リクエストのソースなど、実際には選出プロセスには参加しません。提案者と受容者の相互作用

提案者と受容者の相互作用

Paxosでは、提案はアクセプターに送信され、アクセプターは最終値を選択することに同意し、学習者に最終値を伝えます。

おすすめ

転載: www.cnblogs.com/app574/p/12735296.html