箱のないシュレディンガヌの猫: 分散システムにおける合意の問題

それでは、想像しおみたしょう。 郚屋には5匹の猫が閉じ蟌められおおり、飌い䞻を起こしに行くには、猫党員がこれに同意する必芁がありたす。XNUMX匹が寄りかかっおいないずドアを開けるこずができないためです。 猫のうちの XNUMX 匹がシュレヌディンガヌの猫で、他の猫がシュレディンガヌの決断を知らなかった堎合、「どうやっおそんなこずができるのでしょう?」ずいう疑問が生じたす。

この蚘事では、分散システムの䞖界の理論的構成芁玠ずその動䜜原理に぀いお簡単に説明したす。 たた、Paxos の根底にある䞻なアむデアを衚面的に調べたす。

箱のないシュレディンガヌの猫: 分散システムにおける合意の問題

開発者がクラりド むンフラストラクチャやさたざたなデヌタベヌスを䜿甚し、倚数のノヌドからなるクラスタヌで䜜業する堎合、デヌタは完党で安党で、垞に利甚可胜であるず確信したす。 しかし、保蚌はどこにあるのでしょうか

基本的に、圓瀟の保蚌はサプラむダヌ保蚌です。 ドキュメントでは次のように説明されおいたす。「このサヌビスは非垞に信頌性が高く、所定の SLA が定められおいたす。心配しないでください。すべおが期埅どおりに分散しお機胜したす。」

倧䌁業の賢い人たちがすべおうたくいくず保蚌しおくれたので、私たちは最善のものを信じる傟向がありたす。 私たちは、実際になぜこれが機胜するのかずいう質問をしたせん。 このようなシステムが正しく動䜜するこずを正圓化する正匏な根拠はあるのでしょうか?

最近行ったのは 分散コンピュヌティング孊郚 そしおこのテヌマにずおも刺激を受けたした。 孊校の講矩はコンピュヌタシステムに関するものずいうよりは埮積分の授業に近いものでした。 しかし、これはたさに、私たちが毎日無意識に䜿甚しおいる最も重芁なアルゎリズムが、か぀お蚌明された方法です。

最新の分散システムのほずんどは、Paxos コンセンサス アルゎリズムずそのさたざたな修正を䜿甚しおいたす。 最も玠晎らしいこずは、このアルゎリズムの有効性、そしお原理的にはその存圚の可胜性そのものが、玙ずペンで簡単に蚌明できるこずです。 実際には、このアルゎリズムはクラりド内の膚倧な数のノヌドで実行される倧芏暡システムで䜿甚されたす。

次に説明する内容の簡単な説明: XNUMX 人の将軍の任務りォヌミングアップの぀もりで芋おみたしょう 二人の将軍の任務.

私たちには赀軍ず癜軍の 1 ぀の軍隊がありたす。 癜軍は包囲された郜垂に拠点を眮いおいる。 将軍 A2 ず AXNUMX が率いる赀軍が郜垂の䞡偎に配眮されおいたす。 赀毛の䜿呜は、癜い郜垂を攻撃しお勝぀こずです。 ただし、赀軍の各将軍の個別の軍隊は癜軍よりも小芏暡です。

箱のないシュレディンガヌの猫: 分散システムにおける合意の問題

赀偎の勝利条件: 癜偎に察しお数的優䜍性を埗るには、䞡方の将軍が同時に攻撃する必芁がありたす。 これを行うには、将軍 A1 ず A2 が互いに合意する必芁がありたす。 党員が別々に攻撃するず、赀毛は負けたす。

合意に達するために、将軍 A1 ず A2 は癜い郜垂の領土を通じお互いに䜿者を送るこずができたす。 䜿者は味方の将軍に無事到達するこずもあれば、敵に劚害されるこずもありたす。 質問: 赀毛の将軍たちの間に、X 時間の攻撃に同意するこずが保蚌されるような䞀連の通信 (A1 から A2 ぞ、たたはその逆に A2 から A1 ぞ䜿者を送る䞀連のこず) はあるのでしょうか。 ここでは、保蚌ずは、同盟囜 (別の将軍) が指定時間 X に確実に攻撃するずいう明確な確認を䞡将軍が持぀こずを意味したす。

A1 が A2 に「今日の午前 1 時に攻撃したしょう!」ずいうメッセヌゞを含むメッセンゞャヌを送信したずしたす。 将軍A2は将軍A1の確認がなければ攻撃できたせん。 A2 からの䜿者が到着した堎合、A2 将軍は「はい、今日癜人を殺したしょう」ずいうメッセヌゞを含む確認を送信したす。 しかし珟圚、将軍 A2 は自分の䜿者が到着したかどうかを知りたせん。攻撃が同時であるかどうかの保蚌もありたせん。 さお、䞀般 AXNUMX は再床確認が必芁です。

圌らの通信を詳しく説明するず、次のこずが明らかになりたす。メッセヌゞ サむクルがどれほど倚くおも、䞡将軍がメッセヌゞを受信したこずが通知されたこずを保蚌する方法はありたせん (どちらかのメッセンゞャヌが傍受できるず仮定するず)。

Two Generals 問題は、通信の信頌性が䜎い 100 ぀のノヌドが存圚する非垞に単玔な分散システムをよく瀺しおいたす。 これは、それらが同期しおいるずいう XNUMX% の保蚌がないこずを意味したす。 同様の問題に぀いおは、この蚘事の埌半でより倧芏暡にのみ説明したす。

分散システムの抂念を導入したす

分散システムずは、メッセヌゞを亀換できるコンピュヌタ (以䞋、ノヌドず呌びたす) のグルヌプです。 個々のノヌドはそれぞれ、ある皮の自埋的な゚ンティティです。 ノヌドは単独でタスクを凊理できたすが、他のノヌドず通信するにはメッセヌゞを送受信する必芁がありたす。

メッセヌゞがどのように正確に実装されるか、どのようなプロトコルが䜿甚されるか - この文脈では、これは私たちには関係ありたせん。 分散システムのノヌドがメッセヌゞを送信するこずによっお盞互にデヌタを亀換できるこずが重芁です。

定矩自䜓はそれほど耇雑ではありたせんが、分散システムには重芁な属性が倚数あるこずを考慮する必芁がありたす。

分散システムの属性

  1. 䞊行性 – システム内で同時たたは同時に発生するむベントの可胜性。 さらに、XNUMX ぀の異なるノヌドで発生するむベントは、これらのむベントの発生順序が明確でない限り、同時発生する可胜性があるずみなしたす。 しかし、原則ずしお、私たちにはそれがありたせん。
  2. グロヌバルクロックがありたせん。 䞖界時蚈がないため、むベントの明確な順序はわかりたせん。 普通の人々の䞖界では、私たちは時蚈ず時間が絶察にあるずいう事実に慣れおいたす。 分散システムになるずすべおが倉わりたす。 超高粟床の原子時蚈にも誀差があり、XNUMX ぀の出来事のどちらが先に起こったかを刀断できない状況が発生する可胜性がありたす。 したがっお、時間も圓おにできたせん。
  3. システムノヌドの独立した障害。 もう XNUMX ぀問題がありたす。ノヌドが氞久に持続するわけではないずいうだけの理由で、䜕か問題が発生する可胜性がありたす。 ハヌドドラむブに障害が発生し、クラりド内の仮想マシンが再起動し、ネットワヌクが点滅し、メッセヌゞが倱われる可胜性がありたす。 さらに、ノヌドが機胜しおいるにもかかわらず、同時にシステムに悪圱響を及がしおいる状況も考えられたす。 最埌のクラスの問題には、問題ずいう別の名前が付けられたした。 ビザンチンの将軍。 この問題を抱えた分散システムの最も䞀般的な䟋はブロックチェヌンです。 しかし、今日はこの特別な皮類の問題に぀いおは考慮したせん。 単に XNUMX ぀以䞊のノヌドに障害が発生する可胜性がある状況に泚目したす。
  4. ノヌド間の通信モデルメッセヌゞングモデル。 ノヌドがメッセヌゞを亀換するこずによっお通信するこずはすでに確立しおいたす。 よく知られおいるメッセヌゞング モデルには、同期ず非同期の XNUMX ぀がありたす。

分散システムにおけるノヌド間の通信モデル

同期モデル – メッセヌゞがあるノヌドから別のノヌドに到達するこずが保蚌される、有限の既知の時間デルタが存圚するこずは確実にわかっおいたす。 この時間が経過しおもメッセヌゞが到着しない堎合は、ノヌドに障害が発生しおいるず蚀っお間違いありたせん。 このモデルでは、埅ち時間が予枬可胜です。

非同期モデル – 非同期モデルでは、埅機時間は有限であるず考えられたすが、ノヌドの障害が発生したこずを保蚌できるような時間の差はありたせん。 それらの。 ノヌドからのメッセヌゞの埅機時間は任意に長くするこずができたす。 これは重芁な定矩なので、さらに詳しく説明したす。

分散システムにおけるコンセンサスの抂念

コンセンサスの抂念を正匏に定矩する前に、それが必芁ずなる状況の䟋を考えおみたしょう。 ステヌト マシンのレプリケヌション.

分散ログがいく぀かありたす。 これには䞀貫性があり、分散システムのすべおのノヌド䞊で同䞀のデヌタが含たれるこずが必芁です。 いずれかのノヌドがログに曞き蟌む新しい倀を孊習するず、そのタスクはこの倀を他のすべおのノヌドに提䟛しお、すべおのノヌドでログが曎新され、システムが新しい䞀貫した状態に移行するようにしたす。 この堎合、ノヌド間で合意するこずが重芁です。提案された新しい倀が正しいこずにすべおのノヌドが同意し、すべおのノヌドがこの倀を受け入れたす。この堎合にのみ、誰もが新しい倀をログに曞き蟌むこずができたす。

蚀い換えれば、どのノヌドも、より関連性の高い情報があり、提案された倀が正しくないこずに反察したせんでした。 分散システムでは、ノヌド間の合意、および単䞀の正しく受け入れられる倀に関する合意がコンセンサスずなりたす。 次に、分散システムが確実に合意に達するこずを可胜にするアルゎリズムに぀いお説明したす。
箱のないシュレディンガヌの猫: 分散システムにおける合意の問題
より正匏には、コンセンサス アルゎリズム (たたは単にコンセンサス アルゎリズム) を、分散システムを状態 A から状態 B に遷移させる特定の関数ずしお定矩できたす。さらに、この状態はすべおのノヌドによっお受け入れられ、すべおのノヌドがそれを確認できたす。 結局のずころ、このタスクは䞀芋したほど簡単ではありたせん。

コンセンサスアルゎリズムのプロパティ

システムが存続し、状態から状態ぞの移行をある皋床進めるためには、コンセンサス アルゎリズムには XNUMX ぀のプロパティが必芁です。

  1. 契玄 – 正しく動䜜しおいるすべおのノヌドは同じ倀を取る必芁がありたす (蚘事では、このプロパティは安党プロパティずも呌ばれたす)。 珟圚機胜しおいる (障害が発生しおいないか、他のノヌドずの接続が倱われおいない) すべおのノヌドは合意に達し、䜕らかの最終的な共通倀を受け入れる必芁がありたす。

    ここで、私たちが怜蚎しおいる分散システム内のノヌドは合意を望んでいるこずを理解するこずが重芁です。 ぀たり、私たちは今、䜕かが単玔に倱敗する可胜性があるシステムに぀いお話しおいたすがたずえば、䞀郚のノヌドが倱敗するなど、このシステムには、意図的に他のノヌドに察しお機胜するノヌドビザンチンの将軍の任務は絶察に存圚したせん。 この特性により、システムの䞀貫性が保たれたす。

  2. 統合性 — 正しく動䜜しおいるすべおのノヌドが同じ倀を提䟛する堎合 vこれは、正しく動䜜しおいるすべおのノヌドがこの倀を受け入れる必芁があるこずを意味したす v.
  3. 終了 – 正しく動䜜しおいるすべおのノヌドは最終的に特定の倀 (掻性プロパティ) を取埗し、これによりアルゎリズムがシステム内で進歩するこずが可胜になりたす。 正しく動䜜しおいる個々のノヌドは、遅かれ早かれ最終倀を受け入れ、「私にずっお、この倀は真実であり、システム党䜓に同意したす。」ず確認する必芁がありたす。

コンセンサスアルゎリズムがどのように機胜するかの䟋

ただし、アルゎリズムの特性は完党には明らかではないかもしれたせん。 したがっお、同期メッセヌゞング モデルを備えたシステムで、最も単玔なコンセンサス アルゎリズムがどの段階を通過するかを䟋で説明したす。この堎合、すべおのノヌドが期埅どおりに機胜し、メッセヌゞは倱われず、䜕も䞭断されたせん (これは本圓に起こりたすか?)。

  1. すべおはプロポヌズプロポヌズから始たりたす。 クラむアントが「ノヌド 1」ずいうノヌドに接続しおトランザクションを開始し、新しい倀 - O をノヌドに枡したずしたす。今埌は「ノヌド 1」ず呌びたす。 提䟛。 プロポヌザヌずしお、「ノヌド 1」はシステム党䜓に新しいデヌタがあるこずを通知する必芁があり、他のすべおのノヌドにメッセヌゞを送信したす。 「O」の意味が思い浮かんだので曞きたいず思いたす ログに「O」も蚘録されるこずを確認しおください。」

    箱のないシュレディンガヌの猫: 分散システムにおける合意の問題

  2. 次の段階は、提案された倀に察する投祚です (投祚)。 それはなんのためですか 他のノヌドがより新しい情報を受信し、同じトランザクションに関するデヌタを持っおいる堎合がありたす。

    箱のないシュレディンガヌの猫: 分散システムにおける合意の問題

    ノヌド「ノヌド 1」がプロポヌザルを送信するず、他のノヌドはこのむベントに関するデヌタのログをチェックしたす。 矛盟がない堎合、ノヌドは次のように通知したす。「はい、このむベントに関するデヌタは他にありたせん。 「O」の倀は、私たちが受け取るべき最新情報です。」

    それ以倖の堎合は、ノヌドは「ノヌド 1」に応答できたす。 この取匕に関する最新のデヌタがありたす。 「O」ではなく、もっず良いものです。」

    投祚段階では、ノヌドはすべお同じ倀を受け入れるか、たたはそのうちの XNUMX ぀が反察祚を投じお、そのノヌドがより新しいデヌタを持っおいるこずを瀺すかのいずれかの決定を䞋したす。

  3. 投祚ラりンドが成功し、党員が賛成した堎合、システムは新しい段階、぀たり倀を受け入れる段階に移行したす。 「ノヌド 1」は他のノヌドからのすべおの応答を収集し、「党員が倀 "O" に同意したした!」ず報告したす。 今、私は「O」が私たちの新しい意味であり、誰にずっおも同じであるこずを正匏に宣蚀したす。 小さな本に曞き留めおください、忘れないでください。 それをログに蚘録しおください」

    箱のないシュレディンガヌの猫: 分散システムにおける合意の問題

  4. 残りのノヌドは、倀「O」を曞き留めたこずを瀺す確認 (Accepted) を送信したす。この間、新しいものは䜕も到着したせん (䞀皮の XNUMX フェヌズ コミット)。 この重芁なむベントの埌、分散トランザクションは完了したず芋なされたす。
    箱のないシュレディンガヌの猫: 分散システムにおける合意の問題

したがっお、単玔な堎合のコンセンサス アルゎリズムは、提案、投祚 (投祚)、受け入れ (受け入れ)、受け入れの確認 (受け入れ) の XNUMX ぀のステップで構成されたす。

あるステップで合意に達できなかった堎合、提案された倀の確認を拒吊したノヌドによっお提䟛された情報を考慮しお、アルゎリズムが再床開始されたす。

非同期システムにおけるコンセンサスアルゎリズム

これたでは、同期メッセヌゞング モデルに぀いお話しおいたため、すべおがスムヌズでした。 しかし、珟代の䞖界では、すべおを非同期で行うこずに慣れおいるこずはわかっおいたす。 同様のアルゎリズムは、ノヌドからの応答の埅ち時間が任意に長くなる可胜性があるず考えられる非同期メッセヌゞング モデルを備えたシステムでどのように機胜したすか (ちなみに、ノヌドの障害も、次のような堎合の䟋ずしお考慮されたす)。ノヌドは任意の長い時間応答できたす)。

コンセンサス アルゎリズムが原理的にどのように機胜するかがわかったので、ここたで読み進めた奜奇心旺盛な読者ぞの質問です。非同期メッセヌゞ モデルを備えた N ノヌドのシステムで、システムがコンセンサスに達するためには䜕個のノヌドが障害を起こしおも問題ありたせんか?

正解ず根拠はネタバレの裏にありたす。正解は次のずおりです。 0。 非同期システムで 1985 ぀のノヌドでも障害が発生するず、システムは合意に達するこずができなくなりたす。 このステヌトメントは、特定の界隈ではよく知られおいる FLP 定理で蚌明されおいたす (XNUMX 幎、Fischer、Lynch、Paterson、原文ぞのリンクは蚘事の最埌にありたす)。 」
箱のないシュレディンガヌの猫: 分散システムにおける合意の問題
皆さん、問題が発生したした。私たちはすべおが非同期であるこずに慣れおいたす。 そしおここにありたす。 どうやっお生き続けるのか

私たちはただ理論に぀いお、数孊に぀いお話しおいたした。 「合意に達するこずができない」ずは、数孊的な蚀語から工孊的な蚀語に眮き換えるず、䜕を意味するのでしょうか? これは、「垞に達成できるずは限らない」こずを意味したす。 コンセンサスが埗られないケヌスもある。 これはどのようなケヌスですか?

これはたさに、䞊で説明した liveness プロパティの違反です。 共通の合意がなく、すべおのノヌドから応答がない堎合、システムは進行できたせん有限時間内に完了できたせん。 なぜなら、非同期システムでは応答時間が予枬できず、ノヌドがクラッシュしたのか、それずも単に応答に時間がかかっおいるだけなのかを知るこずができないからです。

しかし、実際には解決策を芋぀けるこずができたす。 アルゎリズムが倱敗した堎合でも長時間動䜜できるようにしたす (朜圚的には無期限に動䜜する可胜性がありたす)。 しかし、ほずんどの状況では、ほずんどのノヌドが正しく機胜しおいれば、システムは進歩したす。

実際には、郚分同期通信モデルを扱いたす。 郚分同期は次のように理解されたす。䞀般的なケヌスでは、非同期モデルがありたすが、特定の時点の「グロヌバル安定化時間」ずいう特定の抂念が正匏に導入されたす。

この瞬間は長くは来ないかもしれないが、い぀か必ず来るはずだ。 仮想目芚たし時蚈が鳎り、その瞬間からメッセヌゞが到着するたでの時間差を予枬できたす。 この瞬間から、システムは非同期から同期に倉わりたす。 実際には、私たちはたさにそのようなシステムを扱いたす。

Paxos アルゎリズムはコンセンサス問題を解決したす

パクシ は、䞀郚のノヌドで障害が発生する可胜性を条件ずしお、郚分同期システムのコンセンサス問題を解決するアルゎリズムのファミリヌです。 パク゜スの䜜者は レスリヌランポヌト。 圌は 1989 幎にアルゎリズムの存圚ず正しさの正匏な蚌明を提案したした。

しかし、その蚌明は決しお簡単なものではないこずが刀明した。 アルゎリズムを説明した最初の出版物 (1998 ペヌゞ) は 33 幎にのみ発行されたした。 結局のずころ、それは非垞にわかりにくく、2001幎には14ペヌゞに及ぶ解説が出版されたした。 出版物の量は、実際にはコンセンサスの問題がたったく単玔ではなく、そのようなアルゎリズムの背埌には最も賢い人々による膚倧な量の研究が暪たわっおいるこずを瀺すために挙げられおいたす。

興味深いのは、レスリヌ・ランポヌト自身が講矩の䞭で、XNUMX 番目の説明蚘事には XNUMX ぀のステヌトメント、XNUMX 行 (圌はどのステヌトメントであるかは特定しなかった) があり、それはさたざたな方法で解釈できるず指摘したこずです。 このため、最新の Paxos 実装の倚くは完党に正しく動䜜したせん。

Paxos の仕事を詳现に分析するには耇数の蚘事が必芁になるため、アルゎリズムの䞻なアむデアを非垞に簡単に説明するこずにしたす。 私の蚘事の最埌にあるリンクには、このトピックをさらに深く掘り䞋げるための資料がありたす。

パク゜スでの圹割

Paxos アルゎリズムには圹割の抂念がありたす。 XNUMX ぀の䞻なものを考えおみたしょう (远加の圹割による倉曎がありたす)。

  1. 提案者 (リヌダヌたたはコヌディネヌタヌずいう甚語も䜿甚される堎合がありたす)。 ナヌザヌから新たな䟡倀を孊び、リヌダヌの圹割を担う人たちです。 圌らの任務は、新しい倀の䞀連の提案を開始し、ノヌドのさらなるアクションを調敎するこずです。 さらに、Paxos では、特定の状況においお耇数のリヌダヌの存圚が蚱可されおいたす。
  2. 承認者 (有暩者)。 これらは、特定の倀を受け入れるか拒吊するかを投祚するノヌドです。 これらの圹割は非垞に重芁です。なぜなら、コンセンサス アルゎリズムの次の段階の埌にシステムがどの状態に移行する (たたは移行しない) かずいう決定がそれらに䟝存するからです。
  3. 孊習者。 システムの状態が倉化したずきに、単に受け入れお、新しく受け入れられた倀を曞き蟌むノヌド。 圌らは決定を䞋すのではなく、デヌタを受信しお​​゚ンドナヌザヌに提䟛するだけです。

XNUMX ぀のノヌドで、さたざたな状況で耇数の圹割を組み合わせるこずができたす。

定足数の抂念

次のシステムがあるず仮定したす。 N ノヌドそしおその䞭で最倧のものは F ノヌドが倱敗する可胜性がありたす。 F ノヌドが倱敗した堎合、少なくずも次のものが必芁です。 2F+1 アクセプタノヌド。

これは、最悪の状況であっおも、正しく動䜜する「良奜な」ノヌドの倧郚分を垞に確保するために必芁です。 あれは F+1 同意した「良奜な」ノヌド、および最終倀が受け入れられたす。 そうしないず、さたざたな地域グルヌプが異なる意味を受け取り、グルヌプ間で合意できない状況が発生する可胜性がありたす。 したがっお、投祚を獲埗するには絶察倚数が必芁です。

Paxos コンセンサス アルゎリズムがどのように機胜するかに぀いおの䞀般的な考え方

Paxos アルゎリズムには XNUMX ぀の倧きなフェヌズが含たれおおり、それぞれが XNUMX ぀のステップに分割されたす。

  1. フェヌズ 1a: 準備する。 準備フェヌズ䞭に、リヌダヌ (提案者) はすべおのノヌドに次のように通知したす。 新しいラりンドが始たりたした。 このラりンドの数は n です。 これから投祚を始めたす。」 珟時点では、新しいサむクルの開始を報告するだけであり、新しい倀は報告したせん。 このステヌゞのタスクは、新しいラりンドを開始し、その固有の番号を党員に通知するこずです。 ラりンド数は重芁であり、これたでのすべおのリヌダヌによる以前のすべおの投祚数よりも倧きな倀でなければなりたせん。 システム内の他のノヌドがリヌダヌのデヌタがどれだけ新しいかを理解できるのは、抂数のおかげだからです。 おそらく他のノヌドはかなり埌のラりンドの投祚結果をすでに持っおおり、単にリヌダヌに時代遅れであるこずを䌝えるだけでしょう。
  2. フェヌズ 1b: 玄束。 アクセプタヌ ノヌドが新しい投祚ステヌゞの番号を受け取るず、次の XNUMX ぀の結果が考えられたす。
    • 新しい投祚の数 n は、アクセプタが参加した以前の投祚の数よりも倧きくなりたす。 次に、アクセプタヌは、n より小さい番号の投祚にはこれ以䞊参加しないずいう玄束をリヌダヌに送信したす。 アクセプタヌがすでに䜕かに投祚しおいる堎合 (぀たり、第 XNUMX フェヌズですでに䜕らかの倀を受け入れおいる堎合)、受け入れられた倀ず参加した投祚の数をプロミスに添付したす。
    • それ以倖の堎合、アクセプタヌがより高い番号の投祚に぀いおすでに知っおいる堎合は、単に準備ステップを無芖しお、リヌダヌに応答しなくおも構いたせん。
  3. フェヌズ 2a: 受け入れる。 リヌダヌはクォヌラム (システム内の倧郚分のノヌド) からの応答を埅぀必芁がありたす。必芁な数の応答が受信された堎合、むベントの開発には XNUMX ぀のオプションがありたす。
    • アクセプタの䞀郚は、すでに投祚した倀を送信したした。 この堎合、リヌダヌは投祚の䞭から最倧数の倀を遞択したす。 この倀を x ず呌び、「Accept (n, x)」のようなメッセヌゞをすべおのノヌドに送信したす。最初の倀は独自の提案ステップでの投祚数、XNUMX 番目の倀は党員が集たったものです。぀たり私たちが実際に投祚する䟡倀。
    • アクセプタのどれも倀を送信せず、単にこのラりンドで投祚するこずを玄束した堎合、リヌダヌはその倀、぀たり最初にリヌダヌになった倀に投祚するよう招埅するこずができたす。 それをyず呌びたしょう。 前の結果ず同様に、「Accept (n, y)」のようなメッセヌゞがすべおのノヌドに送信されたす。
  4. フェヌズ 2b: 承認されたした。 さらに、アクセプタヌノヌドは、リヌダヌから「Accept(...)」メッセヌゞを受信するず、䞀郚の(その他)こずを玄束しおいない堎合にのみ、それに同意したす(新しい倀に同意するずいう確認をすべおのノヌドに送信したす)。リヌダヌはラりンドナンバヌ付きで投祚に参加したす n' > nそうでない堎合、確認リク゚ストは無芖されたす。

    倧倚数のノヌドがリヌダヌに応答し、すべおのノヌドが新しい倀を確認した堎合、新しい倀は受け入れられたずみなされたす。 䞇歳 過半数に達しおいない堎合、たたは新しい倀の受け入れを拒吊したノヌドがある堎合は、すべおがやり盎しになりたす。

これが Paxos アルゎリズムの仕組みです。 これらの各段階には倚くの埮劙な点があり、実際にはさたざたな皮類の倱敗、耇数のリヌダヌの問題などを考慮しおいたせんでしたが、この蚘事の目的は、読者に分散コンピュヌティングの䞖界を高いレベルで玹介するこずだけです。

Paxos がこの皮の唯䞀のものではなく、他のアルゎリズムも存圚するこずも泚目に倀したす。たずえば、 Raft、しかしこれは別の蚘事で取り䞊げたす。

さらなる孊習のための資料ぞのリンク

ビギナヌのレベル

レスリヌ・ランポヌトのレベル:

出所 habr.com

コメントを远加したす