1. Zookeeperの機能 1. Zookeeperノードタイプ 上記の「Zookeeper アーキテクチャと FastLeaderElection メカニズム」で説明したように、Zookeeper は Linux ファイル システムに似たツリー構造を提供します。ツリー構造内の各ノードは znode と呼ばれ、次の 2 つの次元に分類できます。 (1)持続か短命か
(2)シーケンスと非シーケンス
2. Zookeeper のセマンティック保証 Zookeeper はシンプルで効率的であり、次のセマンティック保証を提供するため、これらの機能を使用して複雑なサービスを提供することができます。
3. 動物園の飼育係の監視機構 Zookeeper のすべての読み取り操作にはウォッチを併用できます。対応するデータが変更されると、ウォッチがトリガーされます。時計には以下の機能があります
2. 分散ロックとリーダー選出のポイント 1. 最大で1人がロックを獲得/リーダーになる 分散ロック (ここでは特に排他ロック) の場合、いつでも最大 1 つのプロセス (単一プロセス内のロックの場合は 1 つのスレッド) がロックを取得できます。 リーダー選挙では、いつでも最大 1 人がリーダーとして選出されます。そうしないと、スプリットブレインが発生します。 2. 再入場をロックする/自分がリーダーであることを確認する 分散ロックの場合、ロックを取得したプロセスがロックを解放する前に再度ロックを取得できること、つまりロックの再入可能性を保証する必要があります。 リーダー選出のためには、リーダーはリーダーシップを獲得したこと、つまりリーダーであることの確認ができる必要があります。 3. ロックを解除する/リーダーシップを放棄する ロック取得者は取得したロックを正しく解放でき、ロックを取得したプロセスがクラッシュした場合は、他の競合プロセスがロックを取得できるようにロックが自動的に解放され、デッドロック状態が回避される必要があります。 リーダーは自発的にリーダーシップを放棄でき、リーダーがいるプロセスがクラッシュした場合は、リーダーシップが自動的に解放され、他の参加者が再びリーダーシップを競い合い、リーダーがいない状態にならないようにする必要があります。 4. 認識ロックの解除/リーダーシップの放棄 ロックを取得したパーティがロックを解除すると、そのロックを競合する他のパーティはロックの解除を感知し、再度ロックの取得を試みる必要があります。 元のリーダーがリーダーシップを放棄すると、他の参加者はその出来事を感知し、選挙プロセスを再開できるはずです。 5. 不公平な党首選挙 上記の側面から、分散ロックとリーダー選挙の技術的なポイントは非常に似ており、実際にそれらの実装メカニズムも似ていることがわかります。この章では、リーダー選挙を例に挙げて、2 つの実装原則を説明します。分散ロックの実装原理はほぼ同じです。 6. マスター選択プロセス 次の図に示すように、3 つの Zookeeper クライアントが同時にリーダーの座を競っていると仮定します。これら 3 つのクライアントは、Ephemeral ノードと Non-sequence ノードを Zookeeper クラスターに同時に登録し、パスはすべて /zkroot/leader になります (エンジニアリングの実践では、パス名はカスタマイズできます)。 上図に示すように、非シーケンス ノードであるため、3 つのクライアントのうち 1 つだけが正常に作成され、他のノードの作成は失敗します。この時点で、正常に作成されたクライアント (上図のクライアント 1) がリーダーとして正常に実行されます。他のクライアント (上図のクライアント 2 とクライアント 3) はフォロワーになります。 7. リーダーシップを放棄する リーダーがリーダーシップを放棄するつもりなら、/zkroot/leader ノードを削除するだけです。 リーダー プロセスが予期せずクラッシュした場合、リーダー プロセスと Zookeeper 間のセッションが終了し、ノードは一時ノードであるため自動的に削除されます。 この時点で、/zkroot/leader ノードは存在しなくなります。選挙に参加している他のクライアントにとっては、前リーダーがリーダーシップを放棄したことになります。 8. リーダーシップの放棄の認識 上図からわかるように、ノードの作成に失敗したノードは Follower になるだけでなく、/zkroot/leader に Watch も登録されます。リーダーがリーダーシップを放棄すると、つまりノードが削除されると、すべてのフォロワーに通知が届きます。 9. 再選 古いリーダーがリーダーシップを放棄したことを感知すると、すべてのフォロワーは、次の図に示すように、新しいラウンドのリーダーシップ選挙を開始できます。 上の図からわかるように
10. 不公平モデルの概要
3. 公正なリーダー選挙 1. マスター選択プロセス 下の図に示すように、公平なリーダーシップ選出では、各クライアントが /zkroot/leader ノードを作成し、そのタイプは Ephemeral および Sequence になります。 シーケンス型ノードなので、上図の 3 つのクライアントはすべて正常に作成されていますが、シーケンス番号が異なります。この時点で、各クライアントは、正常に作成したノードのシリアル番号が現時点で最小であるかどうかを判断します。はいの場合、クライアントはリーダーであり、そうでない場合はフォロワーです。 上図では、クライアント 1 が作成したノード番号は 1、クライアント 2 が作成したノード番号は 2、クライアント 3 が作成したノード番号は 3 です。最小シーケンス番号は 1 であり、ノードはクライアント 1 によって作成されたため、クライアント 1 がリーダーです。 2. リーダーシップを放棄する リーダーが自発的にリーダーシップを放棄する場合は、リーダーが作成したノードを削除するだけです。 リーダーが配置されているプロセスが予期せずクラッシュした場合、リーダーと Zookeeper 間のセッションは終了します。作成されたノードは Ephemeral タイプであるため、ノードは自動的に削除されます。 3. リーダーシップの放棄の認識 不公平モードとは異なり、各フォロワーはリーダーによって作成されたノードを監視するのではなく、自分のシーケンス番号よりもわずかに小さいシーケンス番号を持つノードを監視します。 上図では、ノードは合計 1、2、3 の 3 つあり、クライアント 2 は /zkroot/leader1 を監視し、クライアント 3 は /zkroot/leader2 を監視します。 (注: シリアル番号は 1 桁ではなく 10 桁である必要があります。便宜上、ここでは 1 桁の数字を使用しています) リーダーがダウンすると、/zkroot/leader1 が削除され、クライアント 2 に通知されます。この時点では、クライアント 3 は /zkroot/leader2 を監視しているため通知されません。 4. 再選 クライアント 2 は、/zkroot/leader1 が削除されたという通知を受信した後、すぐに新しいリーダーにはなりません。代わりに、まずシーケンス番号 2 が現在の最小のシーケンス番号であるかどうかを判断します。このシナリオでは、そのシーケンス番号は確かに最小です。したがって、クライアント 2 が新しいリーダーになります。 クライアント 1 がリーダーシップを放棄する前にクライアント 2 がクラッシュした場合、クライアント 3 に通知されることに注意することが重要です。この時点では、クライアント 3 はすぐにリーダーにはなりませんが、まずそのシーケンス番号 3 が現在の最小シーケンス番号であるかどうかを判断する必要があります。当然、クライアント 1 によって作成された /zkroot/leader1 がまだ存在するため、クライアント 3 は新しいリーダーにはならず、クライアント 2 のシーケンス番号 2 の前のシーケンス番号 (1) のウォッチを作成します。このプロセスを下の図に示します。 5. 公平性モデルのまとめ
IV.結論 Zookeeper ベースのリーダー選出または分散ロックの実装は、Zookeeper ノードの特性と通知メカニズムに基づいています。これらの機能を最大限に活用することで、他のシナリオに適した分散アプリケーションを開発することもできます。 【この記事は51CTOコラムニスト「Guo Jun」によるオリジナル記事です。転載については原著者にお問い合わせください] この著者の他の記事を読むにはここをクリックしてください |
<<: Arubaの次世代ネットワークソリューションは従来のネットワーク管理に革命をもたらします
>>: クラウド コンピューティングとクラウド ストレージの比較: 具体的な関係は何ですか?
2020年は非常に特別な年です。あらゆる階層の人々が極めて困難な時期に直面しています。しかし、この傾...
[[264500]]負荷分散とは何ですか? Baidu のエントリでの説明は次のとおりです。負荷分散...
近年、中国のハイパースケール クラウド プロバイダーは、他のグローバルおよびローカル クラウド プロ...
独創性はウェブサイトの最適化のプロセスにおいて重要な役割を果たします。特に、高品質のオリジナル記事は...
Crissic はロサンゼルスのデータセンターにサーバーを立ち上げ、openvz + 従来のハードデ...
床を掃いたり、箱を動かしたり、ダンスやパルクールをしたりと、あらゆる種類のかっこいいロボットが人々の...
誰かがYahooとGoogleの違いは何かと尋ねました。 1. Google は意味分析とリンクに重...
Hiformance の最新プロモーションは、元の特別バージョンに基づいており、価格は変更されていな...
name.comではボトムズラップをテーマにしたイベントを開催しています。イベントの割引コードはその...
百度傘下のウェブサイトであるhao123は、1999年5月に設立され、中国で最も古いインターネットナ...
最近、SAP は 2020 年の第 4 四半期および年間財務報告を発表したほか、今四半期に中華圏で締...
入札操作は自慢ではなく、あなた自身の実践経験に依存します。春節前にA5に「ウェブマスターが損をする4...
短編動画がインターネットのコンテンツ基盤となり、ライブストリーミング電子商取引がインターネットの最も...
以下は、多国籍企業が SEO/SEM 部門の責任者を採用する際の具体的な職務内容であり、SEO チー...
数年経っても、ACGを拠点とするビリビリは依然としてゲーム事業を処理できていない。ビリビリは3年前に...