序文ロックとロックの再入を理解した後、理解すべき最も重要なことは、分散シナリオまたはマルチスレッドの同時ロックでロックをどのように処理するかということです。 1同時ロックまずは結果を見てみましょう。複数のスレッドが /locks/lock_01 をロックしたときに、後で新しい一時ノードが作成されました。 これはロックメソッドCreateBuilderImpl#pathInForegroundで導入されました。 ここでは、/locks/lock_01 パスがすでに存在すると判断され、新しい一時シーケンス ノードが直接作成されます。 ロックが正常に取得されたかどうかの実際の判断は、LockInternals#attemptLock メソッド内の internalLockLoop メソッドで行われます。 結果のロックと監視internalLockLoop メソッドの主な機能は、ロックの結果を決定し、ロックの取得が失敗した場合に他のノードを監視することです。
ロックを取得するためのコードはStandardLockInternalsDriver#getsTheLockにあります。 この部分は、getSortedChildrenですべてのノードがソートされているので、メソッドのリストが最小のノードであるかどうかを判断するためのものです。 InterProcessMutex が初期化されるときに、maxLeases は 1 に指定されます。 ここでの最終結果は、それが最小であるかどうかを判断し、最小でない場合は、pathToWatch を前のノードに設定することです。 前のノードを監視するだけで群集効果を回避できます。 なぜ待つ必要があるのでしょうか? これは、前のノードが解放されたかどうかを監視する監視メカニズムがここにあるため、無効なスピンを防ぐためです。 これは ZooKeeper の Watcher 監視メカニズムです。ノードが解放されると、コールバックが行われ、Java の notificationAll メソッドを使用してすべての待機スレッドに通知されます。その後、ここでの while try は実行を継続し、ロックが取得されたかどうかなどを再確認します。 2 まとめこの記事では、主に、同時実行シナリオにおける ZooKeeper に基づく分散ロック フレームワークである Curator のロック競合問題について紹介します。 理解すべき重要なポイントは次のとおりです。
この記事はWeChatの公開アカウント「Programmer Xiaohang」から転載したもので、以下のQRコードからフォローできます。この記事を転載する場合は、プログラマーXiaohangの公式アカウントまでご連絡ください。 |
>>: クラウドネイティブ:家を購入してからオープンするまでのストーリー
SEO担当者として、ウェブサイトを最適化する際には長期戦を覚悟する必要があります。しかし、毎日更新し...
1年以上前、世界的な感染症の流行とそれに伴う社会運営やビジネスモデルの急激な変化に直面し、マイクロソ...
最近、Xiaobai は QQ でよく質問を受けます: なぜ私のウェブサイトはいつも Baidu に...
最近、ウェブマスターがBaiduの重み(BR)について非常に懸念していることが分かりました。このBa...
2013年末、私が勤務していたSutu.comは、セルフメディア事業への転換を開始しました。半年以上...
モバイル検索大手のレイアウト: 商業化は有料ランキングに限定されており、複数の足でより速く動く必要が...
最近、企業サイトで働いている多くの友人と話をしたところ、インターネット上で非常に悪いことが起こってい...
ハイブリッド クラウド アプリケーションが企業環境に導入され、従来のコミュニケーションおよび共同オフ...
オプションは、取引可能なデリバティブ金融商品の一種です。簡単に言えば、オプションとは、一定期間内の取...
Hosteonsは、すべてのVPSをdedipathから新しいデータセンターであるLimestone...
企業はどのようにしてその重みを迅速に改善できるでしょうか? これは多くの SEO 初心者が懸念してい...
はじめに: 新しい Web サイトが立ち上げられ、すべてのプログラムと機能が準備されると、Web マ...
ほんの数か月前、コロナウイルスは誰も予想できなかった方法でクラウドプロバイダーを試しました。世界中で...
joesdatacenterは2008年からサーバー事業を展開しており、独自のカンザスデータセンター...
CAP 理論は、分散ストレージ システムの現在の設計に対する理論的ガイドラインであり、PACELC ...