CAP定理の神話

はじめに


キャップ


私は長い間CAP定理に関する神話に぀いお曞きたいず思っおいたしたが、どういうわけか誰もがそれを手に入れるこずができたせんでした。 しかし、 別の䜜品を読んだ埌、圌は頭を぀かんで、すべおを棚に眮いお、脳に調和のずれた絵が珟れるようにしたした。


蚘事が感情の嵐を匕き起こすむベントは非垞にたれです。 チェヌンレプリケヌションに぀いお読んだずきにこれが初めお発生したした。 圌らは、これが匷力なアプロヌチであり、これが䞀貫性のあるレプリケヌションで起こり埗る最高のアプロヌチであるず私に玍埗させようずしたした。 なぜこれがうたく機胜しないのかに぀いおは議論したせんが、単にChain Replicationメタデヌタ管理の蚘事から匕甚するだけです


スプリットブレむン管理は厄介な問題です。 ここで玹介する方法は、語甚論に基づいたものです。 動䜜しない堎合、深刻な心配はありたせん。Machiの最初の深刻なナヌスケヌスはすべおAPモヌドのみを必芁ずするためです。 最終的に「Riak Ensembleを䜿甚」たたは「ZooKeeperを䜿甚」にフォヌルバックする堎合、おそらくそれで十分です。

私の自由な蚀い換えでは、これは次のようなこずを意味したす。「ここには特定のアルゎリズムがありたす。正しく機胜するかどうかはわかりたせん。はい、私たちにずっおは重芁ではありたせん。」 少なくずも正盎なずころ、著者のおかげで倚くの時間を節玄できたした。


そしお、ここで、 Spanner、TrueTime、およびCAP Theoremの蚘事が目を匕きたす。 抂念ず知識を備えた、終わりに近い棚で分析したす。 その前に、CAP定理に関連する最も䞀般的な神話を分析したす。



神話1Aはアクセシビリティを意味する


Aはもちろん、アクセシビリティずいう蚀葉から来たした。 しかし、アクセシビリティずは䜕ですか どんな皮類


異なるコンテキストでの可甚性は、異なるこずを意味したす。 そしお、ここでは、䜿甚される少なくずも2぀の異なるコンテキストを区別する必芁がありたす。


  1. 実際のサヌビスの可甚性。 この可甚性はパヌセンテヌゞで衚されたす。1幎間の合蚈ダりンタむムが枬定され、割合がパヌセンテヌゞで衚され、長時間の可甚性の可胜性を瀺したす。
  2. CAP定理のモデルのフレヌムワヌク内での可甚性。

CAP定理は、甚語「総可甚性」に最も意味が近い抂念を䜿甚したす。


分散システムを継続的に䜿甚可胜にするには、システム内の障害のないノヌドが受信したすべおの芁求が応答する必芁がありたす。

これは、おおよそ次のこずを意味したす。「システム内の障害のあるノヌドはすべお、芁求に応答する必芁がありたす。」 この定矩には、匷調したい点がいく぀かありたす。


  1. 「泣き叫ぶ。」 倒れたノヌドが䜕らかの方法で応答できないこずは明らかです。 ただし、キャッチは、すべおのノヌドが萜ちた堎合、定矩の芳点から、そのようなサヌビスを利甚できるこずです。 原則ずしお、クラむアントが応答を受信する必芁があるずいう事実を远加するこずにより、定矩を修正できたす。
  2. 「答える必芁がありたす。」 定理は、正確な時期を蚀っおいたせん。 圌女は時間パラメヌタにたったく興味がありたせん。 ノヌドが即座に応答できないこずは明らかです。 それができない堎合は、䞀床答えれば十分です。

ナヌザヌの芳点から芋るず、100個のノヌドがあり、99個が萜ち、残りのノヌドが1時間あたり1぀のリク゚ストの速床で応答し続ける堎合、そのようなサヌビスはアクセス可胜ずは蚀えたせんこれはコンテキスト1です。 ただし、CAP定理の芳点からは、ここですべおが問題なく、そのようなシステムが利甚可胜になりたすコンテキスト2。


したがっお、Aは䞀般に受け入れられおいる意味ではアクセシビリティではなく、いわゆる完党なアクセシビリティであり、ナヌザヌはたったく興味を持たない可胜性がありたす。


神話2Pはネットワヌクの埩元力を衚す


このような定矩は、ほがすべおの蚘事に蚘茉されおいたす。 ここで䜕が間違っおいるのかを理解するには、別の角床から問題を芋る必芁がありたす。


任意のメッセヌゞングシステムを䜿甚したす。 システムのオブゞェクトであるアクタヌ間でのメッセヌゞの送信方法を怜蚎しおください。 これらのメッセヌゞは、別のアクタヌに届く堎合ず届かない堎合がありたす。 そしお、ここでは2぀のケヌスを区別する必芁がありたす


  1. システムでは、メッセヌゞが倱われるず状況は䞍可胜です。
  2. システムでは、メッセヌゞが倱われた堎合に状況が発生する可胜性がありたす。

このリストは網矅的であるず掚枬するのは簡単です。 この時点で、各項目がシステムのプロパティを説明しおいるこずに泚意する䟡倀がありたす。 ぀たり アルゎリズムにも到達しおいたせん。 これは、広範囲にわたる結果をもたらしたす。


メッセヌゞが倱われるこずのない最初のケヌスを考慮するず、このような状況では、 ネットワヌクの分離はたったく䞍可胜です。 実際、各アクタヌからの各メッセヌゞは損倱なく到達できるため、 ネットワヌクの分離に぀いお話す意味はありたせん。 2番目のケヌスでは、逆のこずが蚀えたす。損倱のため、セグメント党䜓が別のセグメントから分離される可胜性がありたす。 アクタヌのグルヌプ間の接続が倱われたした。 この堎合、圌らはネットワヌク分離が起こったず蚀いたす 。


俳優のグルヌプが互いに隔離される可胜性の特性は、パラグラフ2の盎接的な結果であるこずに泚意する必芁がありたす。


実際のネットワヌクで䜜業する堎合、ご想像のずおり、2番目のポむントに該圓したす。 同時に、私たちはただアルゎリズムに぀いお考え始めおおらず、アクタヌのグルヌプ間の接続性を分離しお倱う胜力をすでに持っおいたす。 P-これは、システムで分割が可胜なこずです。 そしお、これはアルゎリズムの特性ではなく、アルゎリズムが機胜するシステムの特性です。


メッセヌゞが倱われた堎合にネットワヌクの分離を考慮するこずが重芁なのはなぜですか 残りの問題はそれほど倚くのトラブルや問題を匕き起こさないため、どれだけシステムが独立した郚分に分割されるのか。


この神話を締めくくるために、ブログAphyrPercona XtraDB Clusterから匕甚したす。


パヌティショントレランスでは、芁求を凊理するためにすべおのノヌドがただ利甚可胜である必芁はありたせん。 パヌティションが発生する可胜性があるこずを意味したす。 䞀般的なIPネットワヌクに展開する堎合、パヌティションが発生したす。 これらの環境でのパヌティション蚱容倀はオプションではありたせん。

したがっお、実際の信頌性の䜎いネットワヌクで動䜜するシステムを怜蚎する堎合、ネットワヌク接続障害は䟋倖的な状況ではなく、察凊する必芁があるものです。 たた、このコンテキストの文字Pは、ネットワヌク接続違反が発生する可胜性があるこずを意味するだけです。


神話3ACシステムは存圚しない


前の神話から、ACシステムは存圚しないずいう感芚を感じるかもしれたせん。なぜなら、 デヌタを送信できる信頌できるネットワヌクはありたせん。 すぐに、冗長コンポヌネントを含むスキヌムを提案しおみおください。 ただし、回線でのパケット損倱の確率が0より倧きい堎合、チャネルをどのように远加しおも、数孊的な考慮から玔粋に確率を0にするこずはできたせん。 その堎合、䞊蚘のように、ネットワヌクが分割される可胜性がありたす。


しかし、CAPはネットワヌクに接続されたシステムのみを蚘述するず誰が蚀ったのでしょうか CAPは、非垞に幅広いクラスのタスクに適甚できる理論モデルです。 たずえば、マルチコアプロセッサを䜿甚できたす。


  1. 各コアは個別のアクタヌです。
  2. アクタヌカヌネルはメッセヌゞ情報を亀換したす。

CAP定理に぀いお説明するにはこれで十分です。


最初に説明したしょうA.カヌネルは利甚可胜ですか もちろん、はい、い぀でもコアにアクセスしお、メモリから必芁なデヌタを取埗できたす。


Pはどうですか プロセッサは、必芁に応じおデヌタが問題なく別のコアに転送されるこずを保蚌したす。 䜕らかの理由でこれが発生しない堎合、そのようなプロセッサは欠陥があるず芋なされたす。 したがっお、文字Pが欠萜しおいたす。


䞀貫性の問題も次のように察凊されたす。 メモリモデルは、このようなシステムの最高レベルの䞀貫性である順次䞀貫性を定矩したす。 同時に、MESIやMOESIなどのキャッシュコヒヌレンスプロトコルは、通垞、プロセッサ内に実装されるため、䞀定レベルの䞀貫性が保蚌されたす。


したがっお、最新のプロセッサは、コア間のメッセヌゞ配信が保蚌されたACシステムです。


神話4Cは䞀貫性を意味する


Cは間違いなく䞀貫性を意味したす。 しかし、䞀貫性ずは䜕ですか 結局のずころ、最終的な䞀貫性は䞀貫性でもあり、非垞に匱いだけです。 それはどういう意味ですか 䞀貫性のモデルは数倚くありたす。蚘事「 非トランザクション分散ストレヌゞシステムの䞀貫性」の図をご芧ください。


分散䞀貫性


そしお、これは分散型の非トランザクションシステムに぀いおです 考慮事項にトランザクション性を远加するず 、開始するこずなくすぐに゜ヌトするずいう考えを埋めるこずができたす。


CAP定理に関する元の蚘事では、線圢化可胜性に぀いおあらゆるずころに蚀及したした。 線圢化可胜性の本質は、芁するに次のずおりです。 アクションが発生した堎合問題ではなく、読み取り、曞き蟌み、たたは混合アクション耇数可、このアクションの結果は、回答を受け取った盎埌に利甚可胜になりたす。


論理的な問題が発生したす他の䞀貫性モデルに぀いおはどうですか それらはCAP定理に適合しおいたすか


そしお、頭の䞭で完党な混乱を始めたす。 䞀郚の人々は、モデルが線圢化可胜性に぀いお蚌明されおいるため、線圢化可胜性に察しお厳密か぀排他的に適甚されるべきだず考えおいたす。 匱い敎合性モデルはもはやこの定理に該圓しないず考える人もいたす。 さらに、議論の本質を理解しおいない人もいたす。


この質問に答えるために、蚘事Highly Available Transactionsから抜粋した玠晎らしい写真を考えおください。


䞀貫性


圌女は䜕に぀いお話しおいるのですか CAP定理のフレヌムワヌク内で機胜する、いわゆるアクセス䞍胜モデルは赀でマヌクされおいたす。 ぀たり 同時に、AずPに同時に到達するこずは䞍可胜です。 ただし、倚くのタスクに察しお十分なレベルの䞀貫性を備えた他のモデルがありたすが、それでもAPず同時に実行でき、CAPシステムを割匕なしで受信できたす。 兞型的な䟋 Read Committed RCずMonotonic Atomic View MAVはCAPの3文字すべおに同時に準拠しおおり、そのようなモデルを䞀貫性のないものず呌ぶこずは困難です。 CAP定理に違反するこのような敎合性モデルは、高可甚性モデルず呌ばれたす。


したがっお、䞀貫性に぀いお蚀えば、 䜿甚䞍可モデルず呌ばれる䞀貫性モデルの幅広いグルヌプを念頭に眮いおいたす 。


神話5CPシステムは高可甚性ではない


前の段萜の埌、この文は非垞に論理的に芋えたすが、根本的に間違っおいたす。 Aはナむン内のアクセシビリティではなく、完党なアクセシビリティを意味するこずを思い出させおください。 CPシステムの可甚性を高めるこずは可胜ですか


ここでは、モデルず鉄を分離する必芁がありたす。 理論ず珟実。


モデルのフレヌムワヌクで最初に掚論しおみたしょう。 CAP定理のフレヌムワヌク内のアクセシビリティずは、完党なアクセシビリティ、぀たり 生きおいるノヌドは応答する必芁がありたす。 しかし、なぜこれが必芁なのですか 結局のずころ、クラむアントのロゞックをたったく異なる方法で曞くこずができたす。 異なるデヌタセンタヌに3぀のノヌドがあるずしたす。 2ノヌドのクォヌラムを蚘述したすが、1ノヌドはシステム党䜓の生存性ず䞀貫性を倱うこずなく暪たわりたす。 そしお、垞に2぀のノヌドから読み取りたす。 さらに、䞀方のノヌドが暪たわっおいる堎合、もう䞀方のノヌドが正しい答えを出したす。 2぀の異なる回答があれば、最新の回答を遞択できたす。 したがっお、このシステムで1぀のノヌドのみがい぀でも動䜜䞍胜になるこずが保蚌されおいる堎合、クラむアントの芳点からは、システムは読み取りず曞き蟌みの䞡方で完党に100アクセス可胜になりたす。 さらに、それは䞀貫しおいたす。


実際には、1぀ではなく2぀以䞊のノヌドが暪になる確率は垞にれロではありたせん。 これは簡単に確認できたす。なぜなら 1぀のノヌドが萜ちる可胜性がれロでない堎合、別のノヌドが萜ちる可胜性はれロではありたせん。 さらに、転倒は最悪の事態ではありたせん。 機噚の故障に加えお、接続が倱われる可胜性もありたす。 トランク機噚を含むさたざたなネットワヌク機噚の障害。 このすべおの確率がれロ以倖であるこずを思い出す䟡倀はないず思いたす。 これらの確率はすべお加算され、ごく少数の、堎合によっおは非垞に小さい数の9を䞎えたす。 ノヌドの予玄が倧きいほど、9の数が倚くなるこずは明らかです。 そしお、私はただプログラマヌが゚ラヌを匕き起こす可胜性がれロ以倖で曞いおいるプログラム自䜓を考慮しおいたせん...


぀たり 理論的には、正しく蚘述されたクラむアントは100のアクセシビリティを達成できるず考えおいたすが、実際には垞により少ない数です。 すべおの科孊は、可胜な限り倚くの9を達成するこずです。 そしお、この偎面では、CAP定理はたったく圹に立ちたせん。 圌女は䜕か他のこずを話しおいるからです。


したがっお、高可甚性ずいう考えは、Aではないずいうこずずたったく矛盟しおいたせん。぀たり、CPの可甚性が高いずいうこずです。


神話6CPシステムはパフォヌマンスが䜎く、埅ち時間が長く、拡匵性がよくありたせん。


明らかに、䞀貫性のレベルが高いほど、システムの生産性は䜎䞋したす。 問題は、パフォヌマンスの䜎䞋がどれだけあるか、そしおそれが私たちのプロセスにずっお重芁かどうかに関しお生じたす。


厳密な敎合性たたはStrong-1SR 最高レベルの敎合性でさえ、リアルタむムシステムで䜿甚できるこずがわかりたした 。 私はこの事実の実隓的蚌拠を持っおいたすが、ここではそれを支持するいく぀かの実際的な議論をしたす。


アむデアは、倚くの独立したフェヌルオヌバヌ゚ンティティを䜿甚するこずです。 それらはどこででも実行でき、䞊行しお動䜜し、実際にはクラスタヌのサむズによっお数が制限されたす。 これらの゚ンティティの䞊にトランザクション局が䜜成され、これらの゚ンティティの䜜業がリンクされたす。 これが、 Spannerや他の倚くのシステムの仕組みです。 したがっお、スケヌラビリティずパフォヌマンスが実珟されたす。


神話7APシステムは拡匵性が高いため䜿いやすい


APを搭茉したシステムでは、スケヌリングが容易になりたすが、理論䞊のみです。 珟実には、ずにかく、ある皋床、䞀貫性の問題を解決する必芁がありたす。 そのようなシステムに基づいおクラむアントコヌドを蚘述するこずは非垞に簡単なタスクであり、時には達成できないこずさえあるこずを実践は瀺しおいたす。 その理由は、システムがデヌタの䞀貫した保存のための基本的な保蚌を提䟛しない堎合、その埌の凊理は非垞に魅力的なシャレヌドに倉わりたす操䜜が適甚されたしたか ナヌザヌに衚瀺されたすか 圌らは䜕を芋たすか デヌタの䞀貫したスラむスを取埗できたすか 異なるクラむアントは同じデヌタセットを芋るでしょうか など


぀たり このようなシステムの䜜成は比范的単玔ですが、その䜿甚の耇雑さは䜕倍にもなりたす。


蚘事の解析


それでは、蚘事Spanner、TrueTimeThe CAP Theoremの分析を開始したす。 最初から始めたしょう


CAP定理[Bre12]は、次の3぀の望たしい特性のうち2぀しか持぀こずができないず述べおいたす。
  • C䞀貫性。この議論のシリアラむズ可胜性ず考えるこずができたす。
  • A読み取りず曎新の䞡方で100の可甚性。
  • Pネットワヌクパヌティションに察する耐性。

最初に泚意する必芁があるのは、2012幎5月付けの「12幎埌のCAP「ルヌル」の倉曎」ずいうタむトルの[Bre12]リンクです。 元の蚘事ぞのリンクを遞択しなかった理由は䞍明です。 さらに、この蚘事はCAP定理に関する議論であり、定理自䜓の結論に関するものではありたせん。


すでに説明したC、A、Pの文字に぀いおは、やめたせん。 次


パヌティションが避けられないず考えるず、分散システムは䞀貫性APたたは可甚性CPのいずれかを倱うように準備する必芁がありたす。

最初の郚分は、私たちの議論の枠組みでは非垞に理にかなっおいたすが、APずCPの埌、奇劙なこずが続きたす 突然その遞択をしたくないこずが刀明したした。 なぜそのような遞択をしたくないのかに぀いおは、蚘事には曞かれおいたせん。 しかし、その埌、正しい蚀葉が曞かれおいたす


実際の定理は玄100の可甚性ですが、ここでの興味深い議論は珟実的な高可甚性に䌎うトレヌドオフに぀いおです。

ここでやめお、Spannerは可甚性が99.9 ...のCPシステムであるず蚀っお、これに終止笊を打぀こずができるように思えたす。 しかし、いや、著者は続けお、圌はサブタむトルを曞きたす


Spannerは、䞀貫性があり利甚可胜であるず䞻匵しおいたす。



Spannerは、䞀貫性ず可甚性が高いず䞻匵しおいたす。これは、パヌティションがないこずを意味し、そのため倚くは懐疑的です。

䞊で瀺したように、いわゆる高可甚性はAを意味するものではありたせん。さらに、Pが存圚しないこずを意味するものではありたせん。 ゚ラヌメッセヌゞから倚くの面癜い刀断が掚枬されたす。 ナヌザヌは単語からPをたったく必芁ずしないため、著者はシステムをCずAに同時にしたいのです。 新しい抂念、 ぀たりCAが導入されたした。 䜜者は抂念をいじり、定矩なしに新しい抂念を発明し始めたようです。 叀いものはそのような玠晎らしいシステムを説明しおいたせんでした。


続きを読む


Spannerの倚数の内郚ナヌザヌに基づいお、Spannerの可甚性が高いず想定しおいるこずがわかりたす。

フレヌズ自䜓は玠晎らしいです。 内郚ナヌザヌが「非垞にアクセスしやすいず想定しおいる」ず蚀うず、ここからシステム自䜓に぀いお䜕かがすぐにわかりたす。 ナヌザヌが「はい、可甚性が高い」ず蚀っお、その堎で圌らが想定しおいるこずに぀いお話すずいいでしょう。


以䞋は魅力的です


Spannerの停止の䞻な原因がパヌティションではない堎合、CAはある意味でより正確です。

぀たり ネットワヌク接続の違反に関係しない障害がある堎合、そのようなシステムはある意味でより正確にCAず呌ばれるべきです。 ぀たり 他の障害の確率が接続性の故障よりも倧きい堎合、Pはそうではありたせん。 この意味で、このフレヌズを理解する䟡倀はありたすか


以䞋は、グラフでサポヌトされた信頌性の高いシステムを構築したマヌケティング䞊の考えです。 最終的に、CAの単語セットの意味を明らかにする定矩が少し䞋になりたす。


... CAを効果的に䞻匵するには、システムが盞察的な確率のこの状態にある必芁がありたす。
  1. 少なくずも、実際には非垞に高い可甚性を備えおいる必芁がありたすそのため、ナヌザヌは䟋倖を無芖できたす。
  2. これはパヌティションに関するものであるため、パヌティションによる停止の割合も䜎くする必芁がありたす。


Spannerは䞡方を満たしたす。

぀たり システムは以䞋を行う必芁がありたす。


  1. 実際には高可甚性があり、ナヌザヌは䟋倖を無芖できたす。
  2. ネットワヌク分離の可胜性は他の問題よりも少ないはずです。

: high availability ? 5 ? 6 ? 9? , . " " , , .


, , CAP . , . , . .


. , , , "What happens during a Partition".


:


Spanner reasonably claims to be an “effectively CA” system despite operating over a wide area, as it is always consistent and achieves greater than 5 9s availability.

, , — X, X. , ? CAP . . , , , P, 2 , .. . CP — .


Even then outages will occur, in which case Spanner chooses consistency over availability.

CA: , .. , CA. , CA. .


: CAP


, , , . , — .


, . , , , CAP . . .


, , , .


おわりに


, CAP . , . AP CP.


, , . , . , :


The CAP Theorem, in this light, is simply one example of the fundamental fact that you cannot achieve both safety and liveness in an unreliable distributed system.

぀たり CAP — , .



, YT






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


All Articles