ZooKeeper 分散ロック キュレーター ソース コード 3: 再入可能ロック同時ロック

ZooKeeper 分散ロック キュレーター ソース コード 3: 再入可能ロック同時ロック

[[410513]]

序文

ロックとロックの再入を理解した後、理解すべき最も重要なことは、分散シナリオまたはマルチスレッドの同時ロックでロックをどのように処理するかということです。

1同時ロック

まずは結果を見てみましょう。複数のスレッドが /locks/lock_01 をロックしたときに、後で新しい一時ノードが作成されました。

これはロックメソッドCreateBuilderImpl#pathInForegroundで導入されました。

ここでは、/locks/lock_01 パスがすでに存在すると判断され、新しい一時シーケンス ノードが直接作成されます。

ロックが正常に取得されたかどうかの実際の判断は、LockInternals#attemptLock メソッド内の internalLockLoop メソッドで行われます。

結果のロックと監視

internalLockLoop メソッドの主な機能は、ロックの結果を決定し、ロックの取得が失敗した場合に他のノードを監視することです。

  1. 親ノード /locks/lock_01 の下にあるすべての子ノードを取得し、小さいものから大きいものの順に並べ替えて、ロックを取得できたかどうかを判断します。そうでない場合は、前のノードを監視します。
  2. タイムアウトの設定をサポートし、タイムアウトが発生した場合は直接失敗を返します。
  3. タイムアウトがサポートされていないか、タイムアウトしていない場合、コマンドは直接待機します。

ロックを取得するためのコードはStandardLockInternalsDriver#getsTheLockにあります。

この部分は、getSortedChildrenですべてのノードがソートされているので、メソッドのリストが最小のノードであるかどうかを判断するためのものです。子供たちは命令されます。

InterProcessMutex が初期化されるときに、maxLeases は 1 に指定されます。

ここでの最終結果は、それが最小であるかどうかを判断し、最小でない場合は、pathToWatch を前のノードに設定することです。

前のノードを監視するだけで群集効果を回避できます。

なぜ待つ必要があるのでしょうか?

これは、前のノードが解放されたかどうかを監視する監視メカニズムがここにあるため、無効なスピンを防ぐためです。

これは ZooKeeper の Watcher 監視メカニズムです。ノードが解放されると、コールバックが行われ、Java の notificationAll メソッドを使用してすべての待機スレッドに通知されます。その後、ここでの while try は実行を継続し、ロックが取得されたかどうかなどを再確認します。

2 まとめ

この記事では、主に、同時実行シナリオにおける ZooKeeper に基づく分散ロック フレームワークである Curator のロック競合問題について紹介します。

理解すべき重要なポイントは次のとおりです。

  1. 群集効果を回避するために、一時的なシーケンシャル ノードは、ロックが失敗した後に前のノードをリッスンします。
  2. 無効なスピンを回避するために、ここでは Java の wait/notifyAll メカニズムが使用されます。
  3. デフォルトのロックは公平なロックであることがわかります。

この記事はWeChatの公開アカウント「Programmer Xiaohang」から転載したもので、以下のQRコードからフォローできます。この記事を転載する場合は、プログラマーXiaohangの公式アカウントまでご連絡ください。

<<:  2021年上半期:分散クラウドについて

>>:  クラウドネイティブ:家を購入してからオープンするまでのストーリー

推薦する

女性向けウェブサイトのSEOに関する個人的な体験談

こんにちは、みんな。私はHele Women’s Networkの編集者、Xiaoweiです。私はウ...

どのような状況でウェブサイトを修正できますか?

どのような状況でウェブサイトを改訂できるのでしょうか? これは多くのウェブマスターやウェブマスターが...

Ganlai Technology が Microsoft Technology and Ecosystem Conference に登場: テクノロジを使用して小売業にスマートな頭脳を与える

現在、デジタル変革はますます多くの企業の議題に上がっており、デジタル化によってもたらされる小売業の変...

独創性≠高品質 初級 識字能力 上級

8月に百度は記事品質アルゴリズムを更新し、多くのウェブサイトからジャンクコンテンツを削除した。その結...

Kafka は高い信頼性と高可用性を維持するためにどのようなメカニズムに依存していますか?

大企業の面接では、履歴書に Kafka が記載されていると、ほぼ確実に次のような質問を受けるでしょう...

キングゴールドグループとオラクルがデジタルトランスフォーメーション2.0の推進で提携

デジタルトランスフォーメーションがビジネス展開の主流になるにつれ、デジタルトランスフォーメーションを...

初心者が入札のコスト効率を高める方法を簡単に説明します

今のところ、Baidu について良いことは何も言えません。Baidu は、独自の Web サイトを持...

新浪微博が情報フロー広告を開始:CPM価格は5元/千インプレッション

昨日、苗叔父さんは「新浪微博封建道」という記事を書くために、ネットでファンストンの詳細情報を検索して...

ケース + メソッド ユーザー アフィリエーション: 業界リーダーが使用するマーケティング手法

月収10万元の起業の夢を実現するミニプログラム起業支援プラン著者: ジャッキー、アクティビティ ボッ...

クラウドコンピューティング:現代のテクノロジーに不可欠な要素

ご存知のように、幼稚園では子どもの教育の初期段階で、将来の行動を形作るいくつかの基本原則を教えます。...

HarmonyOSが配布するTikTok風アプリ

[[430075]]詳細については、以下をご覧ください。 51CTOとHuaweiが共同で構築したH...

SEO ライティングの問題点と焦点は何ですか?

月収10万元の起業の夢を実現するミニプログラム起業支援プランテクノロジーはランキングを最適化し、文学...

クラウド コンピューティングの次の 10 年: 3 大事業者はこれをどう歓迎するでしょうか?

2018 年、我が国のクラウド コンピューティングは 20 年目に突入しました。国家チームに立つ3大...

最大vps-64mメモリKVM簡易評価

つい最近、Hostcat に maximumvps に関する記事が掲載されました (maximumv...