コミットされた分散フェヌルオヌバヌトランザクションの到達可胜性の䞋限

たえがき


最近、このシリヌズの別の蚘事を読みたした。「2フェヌズコミットよりも優れおいたす。」 ここでは、この蚘事の内容を分析したせん詳现な分析を行うこずを考えおいたすが。 私の仕事のタスクは、時間遅延の芳点から最も効率的な分散コミットのバヌゞョンを提案するこずです。 もちろん、このようなコミットには高い代償が䌎いたす。 ただし、倚くの人が信じおいるように、2フェヌズコミットが抑制的ではないこずを評䟡しお瀺すこずが目暙です。


たた、野倖実隓や停の比范は行われないこずに泚意しおください。 アルゎリズムず理論的分析を簡単に瀺したす。 必芁に応じお、実際に独立しお実装および怜蚌できたす。 もちろん、これが珟圚の蚘事で説明されおいればはるかに良いでしょうが、すべおは自由時間ずモチベヌションに䟝存しおいたす。 私の意芋では、アルゎリズムを蚘述するこずはグラフを䞎えるこずよりも重芁です。 ほが党員がアルゎリズムを䜿甚しおグラフを描画できたすが、その逆は圓おはたりたせん。


この玹介の埌、次に進みたす。


はじめに


定矩 RTT-メッセヌゞの埀埩時間。
定矩 ホップずは、1回の出荷の時間です。


定理 時間1 RTTは2ホップの時間ず同じです。
蚌明 。 これは明らかです。


定矩 分散コミットずは、少なくずも2人の分散システム参加者間のアトミックな倉曎を受け入れるプロセスです。


定矩 2フェヌズコミットは2フェヌズコミットです。 最初のフェヌズは、トランザクションを開始しおコミット参加者をブロックする可胜性を怜蚌するアトミック操䜜です。 2番目のフェヌズは、参加者からの応答の収集ず、ロックの解攟を䌎うトランザクションのアプリケヌションです。


定理 2フェヌズの分散コミットは、1 RTTより速く実行できたせん。
蚌明 。 2フェヌズコミットを実行するには、少なくずも、クラむアントからすべおの参加者に芁求を送信し、完了時に応答を受信する必芁がありたす。 これには2ホップたたは1 RTTが必芁です。


定矩 フェむルセヌフコミットずは、1人以䞊のコミット参加者が倱敗した堎合でも実行を継続するコミットです。


定理 1 RTTの2フェヌズフォヌルトトレラント分散コミットが可胜です。


この定理を蚌明するには、可胜な堎合に方法ず条件を䞎えるだけで十分です。 これが垞に可胜であるずは限らないこずは明らかです。 同じリ゜ヌスぞの分散トランザクションの同時アクセスの堎合、そのようなトランザクションはこのリ゜ヌスに䞊ぶ必芁がありたす。 そしお、それはそれらが順番に実行されるこずを意味したす。 この堎合、1 RTTに぀いお話すのは少しおかしいでしょう。 ただし、有利な条件䞋での埓来のアルゎリズムでさえ、1 RTTよりも著しく長い時間を䞎えたす。


この定理の蚌明に぀いおは、この蚘事の埌の郚分で説明したす。


二盞性コミット


コヌディネヌタヌを䜿甚した2フェヌズコミットの叀兞的なスキヌムを考えおみたしょう。


シヌケンスは次のずおりです。


最初のホップ 。 クラむアントはコヌディネヌタヌにリク゚ストを送信したす。
2ホップ目 。 トランザクションコヌディネヌタヌは、ブロックする芁求を参加者に送信したす-フェヌズ1。
3ホップ目 。 参加者は正垞にロックを取埗し、トランザクションを実行する準備ができおいるずいう応答を送信したす。
4ホップ目 。 コヌディネヌタヌは、すべおの参加者に操䜜の適甚に関するメッセヌゞを送信したす-フェヌズ2。
5番目のホップ 。 参加者はコヌディネヌタヌに成功を報告したす。
6ホップ目 。 コヌディネヌタヌはクラむアントに責任がありたす。


合蚈3 RTT。


フォヌルトトレランスを远加したす。 コヌディネヌタヌず参加者は、察応するコンセンサスグルヌプの䞀郚であるず想定したす。 たた、奜たしい条件、すなわち グルヌプのリヌダヌは倉わらず、コンセンサスは正垞に終了したす。 補題を蚌明したしょう


補題 リヌダヌベヌスの分散コンセンサスは、1 RTTより速く完了するこずはできたせん。
蚌明 。 コンセンサスを埗るには、リク゚ストをリヌダヌに送信する必芁がありたす。 この堎合


最初のホップ 。 リヌダヌは、芁求を他のコンセンサスメンバヌフォロワヌに送信したす。
2ホップ目 。 参加者はリヌダヌに確認を送りたす。
これらのフェヌズがなければ、コンセンサスは埗られたせん。


補題 1぀のRTTでコンセンサスが可胜です。
蚌明 Raftアルゎリズムを䜿甚したす。 リヌダヌず倧倚数のコンセンサス参加者の掻気のある堎合、リヌダヌに関する合意された決定の採択は、参加者からの回答を受け取った埌に発生したす。 1 RTT埌。


定矩 コンセンサスによっお合意された決定を䞋すこずは、合意ず呌ばれたす。


この時点で合意が他の圓事者にただ達しおいない堎合でも、この埌システムはこの合意がシステムに残るこずを保蚌するこずに泚意する䟡倀がありたす。 リヌダヌが萜ちた堎合、フェヌルオヌバヌが発生し、その間に新しいリヌダヌがこれらの倉曎を調敎する必芁がありたす。 ただし、これは補題の怜蚎察象ではありたせん。 朜圚性、぀たり 望たしい結果に぀ながる可胜性のある理想的な条件は、合意圢成です。 考えられるすべおの条件を考慮したせんか はい、 非同期システムではコンセンサスが埗られないずいう定理があるためです 。 したがっお、アルゎリズムの正確性を損なうこずなく、これらの条件がどの段階で違反されおも、䞍倉匏を維持するために必芁な、最も有利な状況での最小可胜時間を理解するこずが重芁です。 これらの2぀の補題は、可胜な限り最短の合意時間を達成できるこずを瀺唆する包括的な答えを䞎えたす。


この定理は、リヌダヌの条件を捚おお1 RTTよりも早くコンセンサスに達するこずは䞍可胜であるこずを蚌明するこずによっお䞀般化できたす。 ただし、これはこの蚘事の範囲倖です。 蚌明の考え方は、システムの他の参加者に関する知識の普及ず、察応するメッセヌゞの可甚性を考慮するこずです1ホップでは、デヌタのみを送信できたすが、到着したかどうかず受信者が䜕であったかはわかりたせん。


したがっお、フォヌルトトレランスのために、1 RTTでコンセンサスを取り、2フェヌズコミットに远加したす。


最初のホップ 。 クラむアントはコヌディネヌタヌリヌダヌにリク゚ストを送信したす。
2番目ず3番目のホップ 。 コヌディネヌタヌリヌダヌは、トランザクションの開始に同意したす。
4ホップ目 。 トランザクションコヌディネヌタヌは、参加者のリヌダヌにブロックするリク゚ストを送信したす-フェヌズ1。
5番目ず6番目のホップ 。 参加者は、コンセンサスグルヌプの知識を維持しながら、正垞にロックを取埗したす。
7ホップ目 。 参加者のリヌダヌは、取匕を行う準備ができおいるずいう応答を送信したす。
8番目ず9番目のホップ 。 コヌディネヌタヌのリヌダヌは、システムのすべおの参加者に関する情報を調敎したす。
10ホップ目 。 コヌディネヌタヌのリヌダヌは、参加者のすべおのリヌダヌに、運甚の適甚に関するメッセヌゞを送信したす-フェヌズ2。
11ホップず12ホップ 。 リヌダヌはコミットに同意し、倉曎を適甚したす。
13ホップ 。 参加者は、アプリケヌションの成功に぀いおコヌディネヌタヌのリヌダヌに報告したす。
14ホップ目 。 コヌディネヌタヌはクラむアントに責任がありたす。


合蚈7 RTT。 悪くない。 フォヌルトトレランスのコストは4 RTTです。 それらは、コヌディネヌタヌず参加者が連続しお2回ず぀それぞれ自分のコンセンサスに達するずいう事実のために発生したす。


䞊の図では、いく぀かの非最適性に気付くこずができたす。 それらを排陀したしょう。


コミットの最適化


最初の明らかな最適化は、参加者から成功したロックの応答を収集した盎埌にクラむアントに応答を送信するこずです。 なぜなら これらの回答はフォヌルトトレラントであり、参加者はそれらのこずを決しお忘れたせん。぀たり、ノヌドの損倱、リヌダヌの再遞などの堎合でも、遅かれ早かれトランザクションは完了したす。 ただし、ここでは、滑りやすい瞬間が1぀ありたす。


実際には、コヌディネヌタヌが最終トランザクションをコミットするかどうかに぀いお最終決定を䞋すずいう事実にありたす。 ぀たり すべおの参加者が「OK」ず蚀ったが、リヌダヌの倉曎などで参加者が鈍くなった堎合でも、コヌディネヌタヌはトランザクションをロヌルバックする完党な暩利を持っおいたす。 もしそうなら、あなたは10-13の垌望だけを削陀できたすが、8日ず9日は削陀できたせん。 しかし、2 RTTの枛少があるため、これはすでに悪くありたせん。 7ではなく5 RTT。


同時に、10-13の垌望は消えず、クラむアントはそれらを埅぀必芁はありたせん。 コヌディネヌタヌず参加者は、クラむアントず䞊行しお䜜業を終了したす。 そしお、クラむアントは少し早く確認を受け取りたす。 この知識は、ほんの少し埌にシステムに確実に反映されたす。 ここでは、非同期、コンセンサス、および倖郚の参加者に少し䞍正行為をしおコヌナヌをカットしたこずを蚌明できないずいう魔法を䜿甚したす。 ぀たり クラむアントが私たちがコミットしたばかりのデヌタをすぐに読み、参加者に盎行したい堎合、ロックに぀たずくでしょうそれたでに第2フェヌズで削陀されなかった堎合、このリク゚ストは取り消されるたでフリヌズしたす。 しかし、理論研究の枠組みでは、この事実は私たちにずっお絶察に重芁ではありたせん。 私たちは自分たちにずっお理想的な条件を準備しおいたす。 そしお、䞍完党なものの堎合、䞊蚘のように、私たちはいく぀かの氞遠を埅ちたすコンセンサスには氞遠が必芁であり、さらにそれらのいく぀かを連続しお䜿う必芁があるため。


階士ずの次の動きはやや耇雑で゚レガントです。


トランザクションの最初の郚分を怜蚎しおください。 そこで、クラむアントはコヌディネヌタヌにリク゚ストを送信し、2フェヌズコミットを開始しお、これらのリク゚ストを他の参加者に送信したす。 そのような芁求を同時に満たすずいうアむデアがすぐに生たれたす。 コヌディネヌタヌず参加者の䞡方に䞊行しおリク゚ストを送信したす。 途䞭で陰湿なtrapが私たちを埅っおいたす。


実際、クラむアントはフォヌルトトレラントな゚ンティティではありたせん。 圌は萜ちるかもしれたせん。 圌が参加者にリク゚ストを送信し、ロックを取埗しお埅機したが、䜕らかの理由でコヌディネヌタヌぞのリク゚ストが届かず、クラむアントが萜ちたず想像しおください。 したがっお、2フェヌズコミットを開始する人や、競合/問題などが発生した堎合にロヌルバックする人はいたせん。 参加者は蚘録を氞久にブロックし、誰も圌らを助けたせん。 したがっお、このような最適化は正しくありたせん。 参加者は、トランザクションを担圓し、必芁に応じおロヌルバックするコヌディネヌタヌの決定埌にのみコミットする暩利を持ちたす。


さらに進むには、たったく別の方法で問題を調べる必芁がありたす。 そしお、このために、奇劙なこずに、コンセンサスから始めたす。


コンセンサス最適化


ここで最適化できるず思われたすか 結局、Raftず私は最短のリヌドタむムである1 RTTを達成したした。 実際には、RTTが0の堎合、より高速です。


このため、クラむアントからリヌダヌにリク゚ストを送信しお応答を受信するには、コンセンサス自䜓に加えお、別の1 RTTが必芁であるこずを思い出しおください。 ぀たり この堎合、リモヌトコンセンサスグルヌプには2぀のRTTが必芁です。これは、コヌディネヌタヌでの送信ずコミット、参加者での送信ずコミットの2぀の䟋の2フェヌズコミットで確認できたす。 すぐに合蚈4 RTT、および別の1 RTT-コヌディネヌタヌに第2フェヌズをコミットしたす。


リモヌトクラむアントのリヌダヌに基づくコンセンサスが2 RTTよりも速くなるこずはありたせん。 実際、最初にリヌダヌにメッセヌゞを配信する必芁がありたす。次に、リヌダヌはグルヌプメンバヌを既に転送し、それらから回答を取埗する必芁がありたす。 オプションなし。


唯䞀のオプションは、匱いリンクリヌダヌを取り陀くこずです。 実際、すべおの蚘録がそれを通過するだけでなく、その萜䞋の堎合、グルヌプは非垞に長い間アクセスできなくなりたす。 コンセンサスリヌダヌは最も匱いリンクであり、リヌダヌの回埩はコンセンサスの最も脆匱で重芁な郚分です。 したがっお、あなたはそれを取り陀く必芁がありたす。


定矩 メッセヌゞブロヌドキャストは、グルヌプのすべおのメンバヌに同じメッセヌゞを送信しおいたす。


これを行うには、狭い円で広く知られおいるマスタヌなしでコンセンサスを取りたす。 䞻なアむデアは、ブロヌドキャストが参加者に察しお同じ状態を達成するこずです。 これを行うには、2回ブロヌドキャストすれば十分です。 わずか1 RTT。 システム参加者ぞの最初のブロヌドキャストは、クラむアント自身が行うこずができたす。 参加者からの応答ブロヌドキャストはクラむアントに到達できたす。 クラむアントが同じ状態を芋るずたずえば、競合する芁求がない堎合にこれを芋る、応答ブロヌドキャストの内容を分析するこずで、芁求が遅かれ早かれ通信されるこずを理解できたす。 実際、このようなアルゎリズムを䜿甚するず、クラむアントを含むすべおのコンセンサス参加者は、リク゚ストが通信されたこずを同時に認識したす。 そしお、これは2回のブロヌドキャストの埌に発生したす。 1 RTT。 なぜなら クラむアントはグルヌプぞのメッセヌゞの送信ず応答の受信に1 RTTを費やす必芁があるため、0 RTTでコンセンサスが効果的に発生したずいう逆説的な結論が埗られたした。


アナロゞヌ


さらに進むには、匷力な分析ツヌルを䜿甚したす-類掚。 Raftアルゎリズムに戻りたす。 それで䜕が起こっおいたすか 次の2぀のフェヌズで構成されたす。


第1段階 リヌダヌは参加者にリク゚ストを送信し、応答を埅ちたす。
第2段階 回答埌、リヌダヌは合意された決定を個別に受け取り、システムの参加者に送信したす。


䜕にも䌌おいたせんか そうです、これは2フェヌズコミットであり、泚意点がいく぀かありたす。


  1. Raftアルゎリズムは、すべおの参加者からの応答を埅぀必芁はありたせん。 2フェヌズコミットでは、トランザクションを成功させるために、すべおの参加者からの成功した応答を埅぀必芁がありたす。
  2. Raftアルゎリズムでは、参加者はneoずは蚀えたせん。 より正確に、理論的には、圌はこれを行うこずができたすたずえば、堎所がなくなったが、このneoKは回答がないこずに䌌おいたす。 2フェヌズコミットでは、すべおがより厳密になりたす。参加者の少なくずも1人がneo-OKを蚀った堎合、トランザクション党䜓が悪化しおロヌルバックするはずです。 これは、2フェヌズの本質です。最初にすべおの人の同意を求め、党䌚䞀臎の承認を埗おから倉曎をロヌルオヌバヌしたす。 この意味でのコンセンサスはより民䞻的です。なぜなら、 倚数決が必芁です。

さらに、゜リュヌションには専甚のドラむバヌリヌダヌたたはコヌディネヌタヌがあり、予備段階ず最終段階の2぀のフェヌズがあるずいう共通点がありたす。


したがっお、必芁なのは、2フェヌズコミットでコヌディネヌタヌを攟棄するこずです。 リヌダヌを攟棄するこずでコンセンサスのために行ったのずたったく同じこずを行う。


しばらくの間、フォヌルトトレランスに぀いお忘れお、この堎合のコミットの様子を芋おみたしょう。


自己調敎


定矩 コヌディネヌタヌを䜿甚しない2フェヌズコミットは、2぀のフェヌズで構成されたす。


  1. すべおの参加者は、決定を他のすべおの参加者に送信したすOKたたは非OK。
  2. 党員からOKを受け取った各参加者は、少なくずも1人がOKに返信した堎合、倉曎をコミットするかロヌルバックしたす。

その埌、信頌性のために、各参加者はコミットが発生し、ロックを解陀できるずいう情報を他の党員に送信できたすが、これは必須ではありたせん。


突然コヌディネヌタヌが必芁なくなったのはなぜですか 実際には、コヌディネヌタヌは、ノヌドが皌働しおいるかどうかなど、トランザクションプロセスを監芖したした。 ぀たり 参加者に問題がある堎合、コヌディネヌタヌはトランザクションをロヌルバックしたした。 問題はコヌディネヌタヌだけにありたした、なぜなら 圌は自分の面倒を芋るこずができたせんでした。 したがっお、倚くの堎合、 2フェヌズコミットはブロッキングず呌ばれたす。


定矩 自己調敎トランザクション -専甚のコヌディネヌタヌを必芁ずしないトランザクション。


ただし、フォヌルトトレランスを远加するず、コヌディネヌタヌの圹割は次のように冗長になりたす。 各コンセンサスメンバヌは、自ら立ち䞊がるこずができたす。 したがっお、専甚のコヌディネヌタヌを必芁ずせずに、自己調敎トランザクションになりたす。 コヌディネヌタヌを䜿甚した通垞の2フェヌズコミットずの重芁な違いは、コヌディネヌタヌがすべおの参加者から肯定的な回答があったずしおも、い぀でもトランザクションをロヌルバックするこずを決定できるこずです。 自己調敎トランザクションでは、そのような非決定的な動䜜は受け入れられたせん。 各参加者は、他の参加者の応答に基づいお決定を行いたすが、この決定は同じでなければなりたせん。


定理 自己調敎トランザクションは、厳密な䞀貫性を提䟛したす厳密な䞀貫性=線圢化可胜性+盎列化可胜性。
蚌明 。 実際、この蚌明は、2フェヌズコミットもこのような保蚌を提䟛するずいう単玔な事実に基づいおいたす。 実際、コヌディネヌタヌなしのスキヌムでは、各参加者はそれ自䜓がコヌディネヌタヌです。 最も重芁であるかのように、2フェヌズコミットがありたす。 これは、2フェヌズコミットのすべおの䞍倉匏を保持するこずを意味したす。 これは、各参加者が他の党員にブロヌドキャストの回答を送信するこずを芚えおいれば簡単に確認できたす。 ぀たり 党員が他の党員からOK応答を受け取り、トランザクションをコミットするコヌディネヌタヌずしお機胜したす。


有利な状況䞋での垌望の最小数を説明したしょう。
最初のホップ 。 クラむアントは、トランザクションのすべおの参加者にメッセヌゞを送信したす。
2ホップ目 。 すべおの参加者は、クラむアントずお互いに応答を送信したす。


2番目のホップの埌、クラむアントには、コミットに関する決定を䞋すために必芁なすべおの情報がありたす。 したがっお、コミットに必芁なRTTは1぀だけです。


耐障害性ず可甚性


気配りのある読者が尋ねる堎合がありたすクラむアントがクラッシュした堎合に䜕をすべきか 実際、システムの参加者をフォヌルトトレラントにするこずができる堎合、クラむアントにそのような芁求を行うこずはできたせん。 圌はい぀でも倒れるかもしれたせん。 クラむアントがシステム内のすべおの参加者にリク゚ストを転送した埌、クラむアントの参加なしで分散コミットが完了するこずは明らかです。 そしお、クラむアントがそれらの䞀郚にのみ送信し、安党に萜ちた堎合はどうなりたすか


この堎合、クラむアントは次のこずを行う必芁がありたす。クラむアントは各参加者に、トランザクションの他のすべおの参加者に関する情報を転送する必芁がありたす。 したがっお、各参加者は他のすべおの参加者を知っおおり、結果を送信したす。 さらに、参加者は、クラむアントからリク゚ストを受け取っおいない堎合、次の動䜜のいずれかを遞択できたす。


  1. 圌は取匕を受け入れない、぀たり即座に答えたす neokを送信したす。 この堎合、ロックはロヌルバックされたす。 参加者は、い぀ものように、他の参加者に他の回答を送信したす。
  2. 別の参加者からの芁求に、この参加者のトランザクションコミットを完了するために必芁なすべおの情報が含たれおいる堎合、関連するレコヌドを正垞にブロックしフェヌズ1、OKを転送するこずを決定できたす。 これを行うには、クラむアントは、他のすべおの参加者および分散コミットを完了するために必芁なすべおのデヌタに関するトランザクション情報の各参加者を送信する必芁がありたす。

いずれの堎合でも、すべおの参加者がOKを受け取るか、必芁な情報がない堎合、誰かがOKを通知し、トランザクションがロヌルバックされたす。 ぀たり クラむアントがクラッシュした堎合、各参加者は開始された内容を完了するか、クラむアントのアクションを正しくロヌルバックできたす。


システム参加者に耐障害性を持たせるこずは残っおいたす。 これを行うには、専任のリヌダヌなしでグルヌプのコンセンサスに入れおください。 ぀たり 各参加者は個別のノヌドではなく、コンセンサスグルヌプ内のノヌドのセットを衚したす。


コミットアルゎリズムは次のようになりたす。


  1. クラむアントは、各芁求をトランザクションの参加者のグルヌプに属するノヌドに送信したす。
  2. 各ノヌドは、リク゚ストを受信するず、他のすべおのノヌドずクラむアントに、珟圚の合意ステップで実行されるかのように、コミットの最初のフェヌズの投機的実行に関する回答を送信したす。 珟実には、これが実際に起こるかどうかはわかりたせん。なぜなら、 他のクラむアントから競合するリク゚ストがある堎合、コンセンサスは珟圚適甚されおいないアクションを䞊べ替えるこずがありたす。
  3. クラむアントは、すべおの参加者のすべおのノヌドからすべおの芁求を受け取りたす。 投機的実行䞭のすべおのノヌドがOKず回答し、コンセンサスグルヌプの各ノヌドでコンセンサスステップが同じであった堎合、これは最初のフェヌズの投機的実行が実際に行われ、コミットを決定できるこずを意味したす。

実際、各グルヌプのすべおのノヌドから応答を受信する条件は冗長です。 ただし、この芁件を緩和するためのより詳现な考慮事項は、この蚘事の範囲倖です。


結論


合蚈2ホップたたは1 RTTを取埗したす。 クラむアントずサヌバヌ間のメッセヌゞを削陀できないこずを考慮するず、サヌバヌ偎でのコミットの有効な凊理時間はれロです。 サヌバヌが分散高可甚性フェむルセヌフトランザクションを即座に凊理し、クラむアントに応答を送信したかのように。


このように、重芁な理論的および適甚された事実がありたす分散フェむルセヌフコミットの実行時間の䞋限は達成可胜です。


文孊


マむケル・J・フィッシャヌ、ナンシヌ・A・リンチ、マむケル・S・パタヌ゜ン、1983幎、
1぀の障害のあるプロセスによる分散コンセンサスの䞍可胜性


G. デムチェンコ 、2016幎、 マスタヌレスコンセンサスアルゎリズム


ゞムグレむ、レスリヌランポヌト、2003幎、 トランザクションコミットに関するコンセンサス



Source: https://habr.com/ru/post/J353248/


All Articles