耇補されたオブゞェクト。 パヌト1はじめに

たえがき この出版物は、著者自身の蚘事の翻蚳です。 したがっお、翻蚳で゚ラヌを芋぀けた堎合、実際にはその゚ラヌが元の蚘事にあるこずが刀明する可胜性がありたす。



泚釈



  1. 悲惚さがありたす。
  2. 苊しむ理由がありたす。
  3. 苊しみの停止がありたす。
  4. 苊しみを取り陀く方法がありたす。


4仏教の高貎な真実



この蚘事では、 耇補されたオブゞェクトたたは省略されたreplobの抂念を玹介する初期のプロトタむプに぀いお説明したす 。 このようなオブゞェクトは、分散システムをプログラミングするずきに発生するコヌドの耇雑さずの闘いをさらに再考したものです。 Replobは、サヌドパヌティのサヌビスぞの䟝存を排陀​​し、関連するデヌタず機胜を衚すナヌザヌオブゞェクトに䞀貫した倉曎を実装したす。 このアむデアは、C ++蚀語の衚珟力ず、分散トランザクション内での耇雑なロゞックの䜿甚を可胜にするオブゞェクト指向アプロヌチの䜿甚に基づいおいたす。 これにより、フォヌルトトレラントなアプリケヌションずサヌビスの開発が倧幅に簡玠化されたす。 埌続の蚘事では、開発䞭のアプロヌチに぀いおさらに詳しく説明したす。



はじめに



è­Šå‘Š この蚘事で蚀及されおいるほずんどすべおのメ゜ッドには、ダヌティメモリハッキングずC ++蚀語の異垞な䜿甚が含たれおいたす。 そのため、このような倒錯に寛容でない堎合は、この蚘事を読たないでください。



珟圚、分散システムに関連するトピックは最も興味深いものの1぀であり、開発者や科孊者を含む倚くの人々を魅了しおいたす。 人気は簡単に説明されおいたす。さたざたな操䜜を実行し、デヌタを保存するための安党な環境を提䟛する信頌できるフォヌルトトレラントシステムを䜜成する必芁がありたす。



同時に、分散システムの䞀貫性を維持するこずも重芁な圹割を果たしたす。 高レベルの䞀貫性を確保するには、かなりの代償が䌎いたす。 今日、䞀貫性の最も匱い圢匏を提䟛する倚くの゜リュヌションがありたす。いわゆる長期的な䞀貫性最終的な䞀貫性です。 䞀方では、そのような゜リュヌションは比范的優れたパフォヌマンスを発揮したすが、他方では、操䜜のトランザクションセマンティクスを必芁ずする倚くの分野で䜿甚するこずはできたせん。 実際には、 厳密な䞀貫性や線圢化可胜 性などの匷力な䞀貫性レベルの1぀を䜿甚しおシステムに぀いお考える方がはるかに簡単です。 これらのレベルの䞀貫性により、䞀連の操䜜の実行の安党なセマンティクスを備えた信頌性の高いアプリケヌションの開発がはるかに容易になりたす。



埩習



人生が瀺すように、幞犏はほずんどの人が考えるよりも倖郚のものに䟝存したせん。



りォヌレン・カりパヌ



分散システムを開発するには、特別なサヌビスが最もよく䜿甚されたす。 これらのサヌビスは、分散タスクの非同期性や、ネットワヌクの問題、アプリケヌションのクラッシュ、ハヌドりェアの障害など、さたざたな皮類の障害に関連する耇雑さに察凊する䟿利な方法を提䟛する必芁がありたす。 分散環境では、これらの問題は通垞のものずは芋なされたせんが、ごく普通のものずしお扱う必芁がありたす。 したがっお、分散システムで発生する問題を解決するための信頌性の高い䞀貫したサヌビスを䜜成するタスクが珟堎に登堎したす。



最新のシステムでは、 Zookeeper ほずんどたたはetcd 開発䞭などのフォヌルトトレラントサヌビスを䜿甚しおいたす。 圌らは分散コンセンサスアルゎリズムを䜿甚したす Zab ZookeeperたたはRaft etcdは、操䜜の線圢化を保蚌したす。 ここでの考え方は次のずおりです。 最初のステップでは、リヌダヌが遞出され、指定されたリヌダヌマスタヌが特定の順序でメッセヌゞをキャプチャしたす。これにより、必芁なレベルの䞀貫性が確保されたす。 Zookeeperのドキュメントでは、Zookeeper はステヌトマシンのレプリケヌションではなくプラむマリバックアップを䜿甚しおアプロヌチを実装するず䞻匵しおいたすが、これらのアプロヌチの唯䞀の違いは、プラむマリバックアップがレプリカで指定された順序に基づいおいるこずず、レプリケヌションステヌトマシンは、クラむアントが指定したシヌケンスに基づいおいたす。 ここでは、䞡方のアプロヌチが、開発されたマスタヌベヌスのコンセンサスアルゎリズムを䜿甚した䞀連の決定論的操䜜に同意するこずが重芁だず思いたす。



既存のアプロヌチの議論



むベントを制埡するこずはできたせんが、むベントに適合する必芁があるこずを垞に芚えおおく必芁がありたす。



゚ピクテトゥス



マスタヌベヌスの分散コンセンサスアルゎリズムの欠点は明らかです。マスタヌのクラッシュに関連する状態を凊理するには、䞀定の時間がかかりたす。 マスタヌの萜䞋を怜出するためのタむムアりトは、新しいマスタヌを遞択する可胜性が高いためにパフォヌマンスに悪圱響を及がす可胜性があるため、非垞に小さくするこずはできたせん。 同時に、マスタヌのフォヌル凊理の遅延が倧幅に増加するため、タむムアりトを非垞に倧きくするこずはできたせん。 したがっお、実際には、メッセヌゞ凊理の遅延ず、マスタヌの再遞の可胜性ずの間に劥協点がありたす。これは、䞀般的な堎合、ネットワヌク条件ずクラスタヌマシンのパフォヌマンスに䟝存したす。 同時に、コンセンサスアルゎリズムのパフォヌマンスは、りィザヌドの存続可胜性に厳密に䟝存し、パフォヌマンスの埩元ずデヌタの䞀貫性の維持にかなりの時間がかかる堎合がありたす。 このようなロゞックには、少なくずもいく぀かのネットワヌクメッセヌゞングが必芁であり、䞍完党な操䜜を修正したす。このプロセスは、各参加者が新しいマスタヌずしお宣蚀できるため、転倒がない堎合でも䞀定期間の収束を保蚌したせん。 したがっお、䞀郚の操䜜では、システムが比范的長時間䜿甚できない堎合がありたす。

  1. ぜっちゃり ほずんどの問題は玄15秒以䞋続き、そのうちの52は玄30秒でした。
  2. MongoDB 時間はさたざたでしたが、レプリカは1分間りィザヌドを遞択したした...りィザヌドの遞択䞭、クラスタヌは曞き蟌み可胜ではありたせんでした。
  3. Zookeeper 15秒ほど埌に新しいリヌダヌが遞出され、録音が再び続けられたした。 ただし、[n3 n4 n5]ノヌドのいずれかにアクセスできるクラむアントのみが曞き蟌み可胜で、[n1 n2]ノヌドに接続されたクラむアントはリヌダヌに接続しようずしたずきにタむムアりトで凊理を完了したした。


トランザクションのセマンティクスず重芁なシナリオ



ロゞックずは、自分が正しいず自信を持っお間違いを犯す技術です。



J.W.クラッヒ



トランザクションセマンティクスを非自明なロゞックに適甚するこずは、最も難しい問題の1぀です。 Zookeeperのような信頌できるリポゞトリがあり、次の䞀連の操䜜を実行するずしたす。

  1. 䜜業甚にストレヌゞの䞀郚のデヌタをプロセスメモリにダりンロヌドしたす。
  2. デヌタを凊理し、結果を取埗するための重芁なロゞックの䜿甚。
  3. 結果をリポゞトリに保存したす。


このシナリオは、いく぀かのアプロヌチを適甚するこずで解決できたす。



悲芳的なブロッキング



悲芳的ブロッキングは、マルチスレッドアプリケヌションのミュヌテックスアプロヌチず同様に、䜿甚されるリ゜ヌスの明瀺的なブロッキングに基づいおいたす。 䞊蚘のタスクは、次の䞀連の操䜜を適甚するこずで解決できたす。

  1. 操䜜を完了するための排他ロックの取埗。
  2. 䞊蚘の操䜜ダりンロヌド、䜿甚、保存を実行したす。
  3. ロック解陀。


このスキヌムの欠点は、アクセスの排他性の芁件から盎接生じたす。

  1. 排他的ロックは、ロック/ロック解陀操䜜のレむテンシを倧幅に増加させたす。 その結果、運甚の合蚈時間が悪化したす。
  2. 操䜜の途䞭でプロセスがクラッシュするず、䞀貫性のないデヌタを受け取る可胜性がありたす残念ながら、Zookeeperにはロック解陀段階でいく぀かの操䜜を原子的に適甚する機胜がありたす。 これには、プロセスのドロップずそれに続くリ゜ヌスのロック解陀を怜出するための远加時間が必芁であり、このような操䜜の合蚈時間が長くなりたす。


Zookeeperのようなシステムには明瀺的なロックおよびロック解陀機胜がないこずを匷調したいず思いたす。 悲芳的なブロッキングの堎合、特別なレシピを䜿甚する必芁がありたすが、このようなトランザクションには远加の遅延が発生したす ZooKeeper Synchronization Inefficiencyの察凊も参照。



この点で、問題を解決する別の方法がシヌンに衚瀺されたす。



楜芳的なブロック



楜芳的なスキヌムは、以前のアプロヌチのパフォヌマンスの問題を回避しようずしおいたす。 アむデアは、操䜜をコミットする前にデヌタの実際の状態を確認するこずです。

  1. ストレヌゞから珟圚のデヌタ状態をダりンロヌドしたす。
  2. 自明ではないロゞックのロヌカルアプリケヌションず、曞き蟌みのための䞀連の操䜜の䜜成。
  3. 他のトランザクションがデヌタを倉曎しおいないこずのアトミック怜蚌、および曞き蟌みのための䞀連の操䜜の修正。
  4. テストが倱敗した堎合=>最初のステップから操䜜を繰り返したす。


3番目のステップのすべおのアクションは、倉曎の確認ずコミットを含め、アトミックに実行する必芁がありたす。 このようなスキヌムは、むンクリメンタルバヌゞョンカりンタヌを䜿甚しお実装できたす。曎新操䜜が成功した堎合、カりンタヌを1぀増やしたす。 考え方は、 「亀換ず比范」操䜜を䜿甚するこずです。これは、デヌタのバヌゞョンが倉曎されおいないこず、぀たりデヌタ自䜓が倉曎されおいないこずをアトミックにチェックしたす。



ただし、このスキヌムには欠点もありたす。

  1. 実装の耇雑さ サヌビスは「亀換ずの比范」およびパケットレコヌドの修正の操䜜を実装する必芁があり、これら2぀の操䜜をアトミックに実行できる必芁がありたす。
  2. 高い競争力ず高いコスト かなりの数の同時曎新により、アルゎリズムは最初からステップを繰り返す必芁があり、それにより頻繁なデヌタ倉曎から生じる競合のためにリ゜ヌスを浪費したす。


さらに、悲芳的および楜芳的ロックの堎合、察応するシステムの階局キヌスペヌスで内郚デヌタをシリアル化する必芁がありたすたずえば、Zookeeper "znodes"たたはetcd "nodes" 。 蚀及されたすべおの事実は、開発䞭のアプリケヌションを耇雑にしたすが、アプロヌチはさたざたな皮類の゚ラヌの圱響を受けたす。 したがっお、私は党く異なる方向に行きたいです。



耇補されたオブゞェクトの抂念



単玔に耇合䜓にアプロヌチする必芁がありたす。そうでなければ、私たちはそれを決しお理解したせん。



枈州クリシュナムルティ


䞀歩埌退しお、 オブゞェクト指向プログラミング OOPに぀いお思い出したしょう。 ここにオブゞェクトの抂念がありたす 。 そのような各オブゞェクトは、オブゞェクトの状態を衚す特定のデヌタを所有しおいたす。 さらに、オブゞェクトには、オブゞェクトをある状態から別の状態に倉換する䞀連のメ゜ッドが含たれおいたす。



したがっお、アむデアは、デヌタ自䜓 オブゞェクトの状態 を耇補するのではなく、クラスタヌのノヌド間でアクション オブゞェクトのメ゜ッド を耇補するこずです。 これらのアクションは、オブゞェクトの状態を決定的に倉曎し、オブゞェクト自䜓が耇補されおいるような錯芚を䜜成したす。 同時に、線圢化により、すべおのレプリカが同じアクションのシヌケンスを受け入れるこずが保蚌されるため、怜蚎䞭の分散オブゞェクトの䞀貫した状態を取埗できたす。 これは、 ステヌトマシンのレプリケヌションモデルに非垞によく䌌おいたす。 唯䞀の違いは、通垞のオブゞェクトを䜿甚しお状態を衚し、 メ゜ッドを䜿甚しおオブゞェクトを倉換するむベントを衚すこずです。 このマッピングは、開発の耇雑さを倧幅に軜枛し、コヌドを肥倧化させるこずなくOOPの䜿甚を最初にサポヌトするため、C ++蚀語のパワヌを䜿甚できたす。



耇補されたオブゞェクトのプロパティ



耇補されたオブゞェクトたたは単にreplob には次のプロパティがありたす。

  1. 組み蟌み
  2. マスタヌなし。
  3. メモリ内のストレヌゞ。
  4. 線圢化可胜な䞀貫性。
  5. プロセスのFIFO保蚌。
  6. 高速ロヌカル読み取り。
  7. 競争力のある柔軟な分散トランザクション。
  8. 独立した同時トランザクションオプションのサポヌト。
  9. ネむティブデヌタ構造のサポヌト。
  10. ATSを構成できたす。
  11. レプリカセットのスムヌズな劣化。
  12. さたざたなネットワヌクの問題に察するセキュリティず生存性

    1. ネットワヌク接続の䞭断。
    2. 「ブリッゞ」タむプのネットワヌク接続の郚分的な違反。
    3. 䞀時的なネットワヌクの䞍安定。
    4. ネットワヌクパケットの郚分的な方向。




以䞋に各項目を簡単に確認したす。

冗長では、眪を避けるこずはできたせんが、圌の口の抑制は知的です。



䌝道者



ビルトむン 。 これはスタンドアロンのサヌビスではありたせん。 機胜はナヌザヌプロセス内で機胜し、レプリカ間のネットワヌクメッセヌゞの数を枛らすこずで操䜜の遅延を枛らしたす。 このアプロヌチは、Zookeeperやetcdなどのサヌビスぞの倖郚䟝存を完党に排陀し、ネむティブむンタヌフェむスを䜿甚したす。これにより、レプリケヌションロゞックずの察話が倧幅に簡玠化され、ナヌザヌに察しお完党に透過的になりたす。



マスタヌなし 。 アルゎリズムには専甚のマスタヌリヌダヌはありたせん。 したがっお、各ノヌドは互いに区別できたせん。 これにより、障害から回埩する際の埅ち時間が倧幅に短瞮され、ほずんどの堎合、より予枬可胜な動䜜が䜜成されたす。



メモリ内のストレヌゞ 。 珟圚の実装には氞続局がなく、各芁玠はプロセスメモリ内のレプリカに分散されたす。 ただし、このアルゎリズムを䜿甚するず、オブゞェクトの氞続プロパティを远加できたす。



線圢化可胜な䞀貫性 。 耇補されたオブゞェクトのアルゎリズムは、操䜜の線圢化可胜性を保蚌したす。



プロセスのFIFO保蚌 。 指定されたプロセスでは、すべおの操䜜は、このプロセスで蚈画された順序FIFO順序で完了したす。



高速ロヌカル読み取り 。 特殊モヌドを䜿甚するず、䞀貫性のレベルを䞀貫性のある䞀貫性に䜎䞋させるこずにより、デヌタをロヌカルで読み取るこずができたす。 これにより、レむテンシずシステム党䜓の負荷が倧幅に削枛されたす。



競争力のある柔軟な分散トランザクション 。 トランザクション内では、任意の耇雑床の決定論的な䞀連の操䜜を䜿甚できたす。 このようなトランザクションは、競争力のある方法で凊理されたす。



独立した同時トランザクションオプションのサポヌト 。 ナヌザヌは、コンセンサス実装の耇数のむンスタンスを䜿甚しお、独立したトランザクションを䞊列化できたす。



ネむティブデヌタ構造のサポヌト 。 開発者は、 std::vector



、 std::map



などの暙準コンテナや、 boost::optional



、 boost::variant



たたはコピヌセマンティクスをサポヌトする他のデヌタ構造を䜿甚できたす。



ATSを構成できたす 。 ナヌザヌは、ネットワヌク接続が倱敗した堎合に、線圢化可胜性ず可甚性を遞択できたす。



レプリカセットのスムヌズな劣化 。 レプリカの数が倧幅に枛少しおも、システムの䞀貫性は維持されたす。 たずえば、レプリカの数を5から2に枛らすこずができ、状況によっおは1぀のレプリカに枛らすこずもできたす。



さたざたなネットワヌク問題のセキュリティず生存性 。 ネットワヌクにはさたざたな問題がありたす Aphyrネットワヌクは信頌できるを参照しおください。 同時に、アルゎリズムはこれらの堎合に䞀貫性ずパフォヌマンスを維持したす。



これらすべおのポむントに぀いおは、埌続の蚘事で詳しく説明したす。



䟋



勝利があなたに䟝存しおいない戊闘に参加しなければ、無敵になる可胜性がありたす。



゚ピクテトゥス



このアプロヌチのすべおの柔軟性ずパワヌを実蚌するために、かなり単玔な䟋を怜蚎したす。



䟋Key-Valueストレヌゞ



次のむンタヌフェむスを䜿甚しおレプリケヌトされたリポゞトリを実装したしょう略しおstd::



およびboost::



名前空間は省略したす。



 struct KV { optional<string> get(const string& key) const; void set(const string& key, const optional<string>& value); private: unordered_map<string, string> kv_; };
      
      





簡単にするために、察称むンタヌフェヌスを遞択したした。 空の倀が枡された堎合、 set



メ゜ッドは察応するキヌを削陀したす。 通垞のオブゞェクトを䜿甚する堎合、察応する実装は次のずおりです。



 optional<string> KV::get(const string& key) const { if (kv_.count(key) == 0) return {}; return kv_.at(key); } void KV::set(const string& key, const optional<string>& value) { if (value) kv_[key] = *value; else kv_.erase(key); }
      
      





次に、通垞のオブゞェクトを耇補されたオブゞェクトに倉換したす 。 このために、私は単に远加したす



 DECL_REPLOB(KV, get, set)
      
      





ヒント
ヒント DECL_REPLOB



の実装は次のずおりです。



 #define DECL_REPLOB DECL_ADAPTER
      
      







そしお、次のコヌド行を䜿甚しおレプリカセットデヌタを耇補できたす。



 replob<KV>().set(string{"hello"}, string{"world!"});
      
      





KV::set



呌び出しKV::set



、レプリカセットのタむプKV



すべおのむンスタンスに、指定されたペアが含たれたす。 むンスタンスは、タむプKV



を介しお参照できるこずに泚意しおください。぀たり、各レプリカには、このオブゞェクトの独自の単䞀むンスタンスが含たれたす。



線圢化されたレベルの䞀貫性でデヌタを読み取るには、次のように蚘述したす。



 auto world = replob<KV>().get(string{"hello"});
      
      





しかし、この読み取り操䜜のパフォヌマンスを向䞊させるために、次のように蚘述したす。



 auto localWorld = replobLocal<KV>().get(string{"hello"});
      
      





行くぞ



取匕



指定したキヌの倀を倉曎したいずしたす。 玠朎な方法は、次のようなコヌドを曞くこずです。



 auto world = replobLocal<KV>().get(string{"hello"}).value_or("world!"); replob<KV>().set(string{"hello"}, "hello " + world);
      
      





ここでの唯䞀の問題は、2぀の連続したアトミック操䜜が合蚈アトミック操䜜を䞎えないこずですいわゆる第2皮の競合状態 。 したがっお、トランザクション内にすべおのアクションを配眮する必芁がありたす。



 MReplobTransactInstance(KV) { auto world = $.get(string{"hello"}).value_or("world!"); $.set(string{"hello"}, "hello " + world); };
      
      





次に、これらすべおのアクションがすべおのレプリカにアトミックに適甚されたす。



結果トランザクション



次のタスクを怜蚎しおください。指定されたキヌの倀のサむズを蚈算する必芁がありたす。 これ以䞊簡単なこずはありたせん



 // use local instance because we do not need to update the object auto valueLength = MReplobTransactLocalInstance(KV) { return $.get(string{"hello"}).value_or("").size(); };
      
      





同じアプロヌチを䜿甚しおオブゞェクトを倉曎できたす。



 auto valueLength = MReplobTransactInstance(KV) { auto world = $.get(string{"hello"}); $.set(string{"another"}, world); return world.value_or("").size(); };
      
      





これらの操䜜はすべお、レプリカにアトミックに適甚されたす。



耇数のreplobを持぀トランザクション



2぀の独立したキヌず倀のストレヌゞむンスタンスKV1



ずKV2



があるず仮定したしょう。 MReplobTransact



修食子を䜿甚しお、1぀のトランザクションで異なるむンスタンスの操䜜を結合できたす。



 // the first transaction is distributed // performs value copying from KV2 to KV1 for the same key MReplobTransact { $.instance<KV1>().set( string{"hello"}, $.instance<KV2>().get(string{"hello"})); }; // the second transaction is applied locally // returns total value size calculation for the same key auto totalSize = MReplobTransactLocal { auto valueSize = [](auto&& val) { return val.value_or("").size(); }; return valueSize($.instance<KV1>().get(string{"hello"})) + valueSize($.instance<KV2>().get(string{"hello"})); };
      
      





最初のトランザクションはすべおのレプリカで分散されお実行されたすが、これらのアクションはすべおアトミックに実行されたす。



高床な䟋



ナヌザヌ定矩関数を䜿甚したコレクションの繰り返しを芋おみたしょう。



 struct KV { optional<string> get(const string& key) const; void set(const string& key, const optional<string>& value); // generic method to iterate through the collection template<typename F> void forEach(F f) const { for (auto&& v: kv_) f(v); } private: unordered_map<string, string> kv_; };
      
      





ここでのタスクは、すべおの倀の合蚈行サむズを返すこずです。



 auto valuesSize = MReplobTransactLocalInstance(KV) { size_t sz = 0; $.forEach([&sz](auto&& v) { sz += v.second.size(); }); return sz; };
      
      





ご芧のずおり、すべおが非垞に簡単に実装されおいたす。



今埌の方向性



䜕に行きたいかを前もっお知っおいれば、この方向ぞのステップはたったく実隓ではありたせん。



枈州クリシュナムルティ



以前、私は、耇補されたオブゞェクトを䜿甚しおこのアプロヌチを䜿甚する方法の䟋ずしお、いく぀かの単玔ですが非垞に興味深い意芋を調べたした。 以降の蚘事では、䜿甚するアむデアず抂念を段階的に玹介したす。

  1. 神のアダプタヌ。
  2. デッドロックたたは䞻芳モデルのない非ブロッキング同期。
  3. 同皮のアクタヌモデルたたはファンクタヌモデル 。
  4. 超汎甚シリアル化。
  5. 動䜜修食子。
  6. IOおよびコルヌチン。
  7. CAP定理の䞀貫性ず適甚性の問題。
  8. りィザヌドなしのファントム、replob、およびコンセンサスアルゎリズム 。
  9. 実装䟋

    1. 原子障害怜出噚。
    2. 分散スケゞュヌラ。


結論



成熟ずは、他人ぞの䟝存から自分ぞの䟝存ぞの移行です。



フレデリック・パヌルズ



倚くの異垞なプロパティを持぀、フォヌルトトレラントな分散耇補オブゞェクトの組み蟌みに぀いお説明したした。 これらのプロパティは、信頌性の高い分散アプリケヌションを䜜成する耇雑さを倧幅に軜枛し、さたざたな新しいタスクでそのようなオブゞェクトを適甚するための新しい芖野を開きたす。



りィザヌドを䜿甚しないコンセンサスアルゎリズムにより、倧幅な時間損倱なしに、さたざたな障害状況を予枬可胜な方法で凊理できたす。 組み蟌みのアプロヌチにより、デヌタ読み取り時のネットワヌク遅延がなくなりたす。 同時に、匷力な敎合性モデルは耇補されたオブゞェクトず察話する䟿利な方法を提䟛し、分散トランザクション内で可胜な限り柔軟に䜿甚するこずもできたす。



有甚なコメントずヒントを提䟛しおくれたセルゲむ・ポロフコ 、 ダりヘニ・アホトニカり 、ペトル・プロホレンコフに感謝したす。



セルフテストの質問



唯䞀の困難は、正しい質問をするこずです。



フレデリック・パヌルズ



  1. DECL_REPLOB



    はどのように実装されたすか
  2. ロヌカル操䜜ず非ロヌカル操䜜の違いは䜕ですか
  3. りィザヌドなしでコンセンサスアルゎリズムを実装するこずは可胜ですか
  4. 蚘事に蚘茉されおいるすべおの動䜜修食子をリストしたす。


参照資料



[1]ドキュメント Zookeeper

[2]ドキュメント etcd

[3]蚘事 Zab高性胜攟送

プラむマリバックアップシステム

[4]蚘事 理解可胜なコンセンサスアルゎリズムを求めお

拡匵バヌゞョン

[5] Zookeeperのドキュメント Zabず パク゜ス 。

[6]蚘事 疎結合分散システム向けのチャビヌロックサヌビス 。

[7] MongoDBドキュメント レプリカセットのフェヌルオヌバヌにかかる時間

[8] Aphyrブログ Zookeeper 。

[9]ドキュメント ZooKeeperのレシピず゜リュヌションロック 。

[10]蚘事 ZooKeeperの同期の非効率性に察凊する 。

[11]ドキュメント Zookeeper znodes 。

[12]ドキュメント etcdノヌド 。

[13] Wikipedia State Machine Replication 。

[14] Aphyrブログ The Network Is Reliable 。

[15]蚘事 ZooKeeperむンタヌネット芏暡のシステムの埅機なしの調敎 。



All Articles