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担当者として、ウェブサイトを最適化する際には長期戦を覚悟する必要があります。しかし、毎日更新し...

ハイブリッドな未来の働き方、ニューノーマルにおける競争力

1年以上前、世界的な感染症の流行とそれに伴う社会運営やビジネスモデルの急激な変化に直面し、マイクロソ...

Baidu が新しいウェブサイトを K-out するのを避ける方法

最近、Xiaobai は QQ でよく質問を受けます: なぜ私のウェブサイトはいつも Baidu に...

百度の重みに関する個人的な見解

最近、ウェブマスターがBaiduの重み(BR)について非常に懸念していることが分かりました。このBa...

セルフメディアでは何が変わり、何が変わらないのでしょうか? ビデオセルフメディアは成功できるのでしょうか?

2013年末、私が勤務していたSutu.comは、セルフメディア事業への転換を開始しました。半年以上...

モバイル検索大手のレイアウト:商業化は有料ランキングに限定されており、複数の方法で前進する必要がある

モバイル検索大手のレイアウト: 商業化は有料ランキングに限定されており、複数の足でより速く動く必要が...

人気のない業界の企業にとって、ブランド用語、タグワード、ロングテールワードだけを使うだけで十分でしょうか?

最近、企業サイトで働いている多くの友人と話をしたところ、インターネット上で非常に悪いことが起こってい...

メールシステムハイブリッドクラウドアプリケーションソリューション

ハイブリッド クラウド アプリケーションが企業環境に導入され、従来のコミュニケーションおよび共同オフ...

ただし、ほとんどのオプションは役に立ちません。

オプションは、取引可能なデリバティブ金融商品の一種です。簡単に言えば、オプションとは、一定期間内の取...

企業のウェブサイトの重量を迅速に改善するにはどうすればよいでしょうか?

企業はどのようにしてその重みを迅速に改善できるでしょうか? これは多くの SEO 初心者が懸念してい...

ウェブサイト運営=SEO?

はじめに: 新しい Web サイトが立ち上げられ、すべてのプログラムと機能が準備されると、Web マ...

中間レビュー: 2020 年のクラウド障害最大 10 件

ほんの数か月前、コロナウイルスは誰も予想できなかった方法でクラウドプロバイダーを試しました。世界中で...

joesdatacenter-Server$41/デュアルチャネル X5650/12g メモリ/1T ハードディスク/20T トラフィック/5IP

joesdatacenterは2008年からサーバー事業を展開しており、独自のカンザスデータセンター...

分散ストレージシステムの理論的指針をCAPからPACELCに移行する時期が来ている

CAP 理論は、分散ストレージ システムの現在の設計に対する理論的ガイドラインであり、PACELC ...