ZooKeeperのとCAP

CAP理論

  、可用性(A:利用可能)、フォールトトレランスパーティション(P:分割耐性)の2つだけを満たすことができる3つの基本的な要件:CAP理論、分散システムは、同時に一貫(整合C)を満たすことができません商品Pが必要であるため、それはしばしばCP又はAPに選択されます。

一貫性(C:整合性)
  分散環境で、データは、一貫した特性を維持することができ、データの複数のコピー間の一貫性を指します。需要の一貫性は、システムの更新操作が一貫した状態データに行われた後、システムは、一貫性のある状態で、そのデータが残っを確保すべきです例えば、システムデータのコピーは、データが第1のノード更新し、そして更新が成功した場合、それを分散、他のノード上のデータが更新されるべき、すべてのユーザが読むことができるの異なるノードに分散しますその最新の値を取るために、そのようなシステムは、強い一貫性(または厳格な一貫性、結果整合性)を持っていると考えられました。

可用性(A:利用可能な)
  状況を指す常に使用可能な状態である必要があり、システムによって提供されるサービス、常に限られた時間内に各操作要求ユーザの結果を返しますユーザの操作要求に対して、システムがよりこの時間枠よりも、システムが使用不可能であると考えられる場合、対応する処理結果を返す時間(即ち、反応時間)を指定することができなければならない、ことを「有効時間」手段A。
  「戻る結果は、」ユーザー要求の処理後にシステムを必要と可用性の別の非常に重要な指標であり、それは正常な応答結果を返します。明らかに混乱はなく、ユーザーが結果を返すことができ、成功または失敗である要求の処理の結果を反映するために、結果は通常、正常な反応です。

パーティションのフォールトトレランス(P:分割耐性)
  パーティションは、分散システムの許容範囲の制約を障害次の特性持っている必要があります:すべてのネットワークパーティションに障害が発生したの顔に分散システムを、彼らはまだ、サービスの一貫性と可用性を満たすために外部の保証を提供できるようにする必要があり、全体のネットワーク環境がない限り失敗しました
  分散ネットワークシステムにおけるパーティションを指し、いくつかの特定の状況で異なるサブネットワーク(外部ネットワーク室等)内の異なるノードは、各サブネットワーク、通信ネットワークは、サブネットワーク間で発生していない原因が、内部ネットワークは、単離された複数の領域に分割されたネットワーク環境にシステム全体を引き起こす、正常です。分散システム内の各ノードの組成が参加すると出口が特別なネットワーク・パーティションと見なすことができることに留意すべきです。

分散システムのためには、同時に3つの要件以上満たし、2つだけ、それらを満たすのができないので、CAP定理の適用期間中に、ビジネスの要件に応じてそれらのいずれかを放棄する必要があります。

ZooKeeperののCAP理論

  このZooKeeperのではそのCPを確保します。可用性を満たすことができない(A:使用可能)

私たちは、各サービス要求の可用性を保証することはできませんZooKeeperの要求データにいつでもアクセス一貫性のある結果を得るために、ネットワークセグメンテーションフォールトトレラントのためのシステム、それが各サービス要求(注の可用性を保証することはできません。ですが、極端な状況では、ZooKeeperのは、いくつかの要求をドロップすることがあり消費者は)結果を得るために再プログラム要求する必要があります。だから、ZooKeeperのは、サービスの可用性を保証することはできません。
  ときリーダー選挙クラスタは使用できません使用してZooKeeperのは、マスターノードが他のノードの障害とネットワーク失われた接触は、残りのノードは、リーダーの再選挙となりますので、サービスのリストを取得する場合。問題は、選挙のリーダーが長すぎる、30〜120秒、およびクラスタ全体のサービスは、最終的に回復しますが、選挙登録サービス中に麻痺につながっ選挙、中には使用できませんZKが、選挙登録の長いリードタイム長期間の使用が容認することはできません。だから、ZooKeeperのは、サービスの可用性を保証することはできません。

ZooKeeperの提供するサービスの一貫性

:一貫性はに分けることができ
 、強い一貫性(強い整合性)。いつでも、任意のユーザは、データの最新の更新が成功読むことができ
 単調一貫性(単調一貫性)。いつでも、読み取りの更新後のデータの値は、一度任意のユーザーが、それはこの値よりも古い値を読むことはありません。つまり、取得したデータの順序は、単調増加でなければならない
 セッションの一貫性(セッションの一貫性)。セッション内のすべてのユーザーは、読書の更新後のデータの値と、このセッションでは、この値は単調一貫性のセッションの一貫性のある値よりも古い読みませんさらに、単一のユーザー単一セッション内でのみ保証単調に基づいて制約を緩和するために、保証は異なるユーザーまたは異なるユーザーセッションの中で同じ存在しない
 結果整合性(結果整合性)。ユーザーは、更新された特定の値を読み取ることができますが、システムは、データが最終的にはまったく同じ状態に達しますが、ために必要な時間を保証することはできませんことを保証するために
 、弱い一貫性(弱い一貫性)。ユーザーが特定の時間内に更新された最新の値を読み取ることができません

データの一貫性を確保するために、以下の点からのZooKeeper:

  • シーケンシャル一貫性任意の特定のクライアントからの送信順序を更新するには、一貫性のある提出されますクライアント後の値は、zの値があるのznode更新かどうかを確認するには、今度はZ bの値を更新操作の後、クライアントは、zの値をbと見ることができません
  • 原子性各アップデートが成功か失敗のどちらか更新に失敗した場合、クライアントは存在しません更新された結果が表示されます
  • シングルシステムイメージクライアントは接続するサーバーに関係なく、それはシステムが同じビューです見ています同じセッション内のクライアントが新しいサーバーに接続する場合は、システムの状態を見て前に、サーバー上のより古くない見ています。これらのサーバが故障したサーバーをキャッチアップしない限り、サーバーに障害が発生すると、集計の他のサーバーへのクライアントのニーズを接続する試みで、その結果、障害が発生したサーバーの背後にあるすべてのサーバーのラグは、接続要求を受け入れることはありません
  • 持続性アップデートに成功した場合、結果が持続し、取り消されることはありません更新は、サーバの障害によって影響されることはありません
  • リアルタイム:一定の期間内に、クライアントシステムがリアルタイムで保証する必要が見ることができます。この期間では、システム内の任意の変化を検出するために、クライアント、またはクライアントによって見られます

ZooKeeperのパーティション回復力を確保:
  限り、複数の機械の半分以上も正常に動作することが可能であるとして、クラスタ内の1つのサーバは、クラスタを失敗したときに、クラスタ全体のサービスを提供することができるようになります。

公開された138元の記事 ウォン称賛45 ビュー80000 +

おすすめ

転載: blog.csdn.net/ThreeAspects/article/details/104280517