序文ロックとロックの再入を理解した後、理解すべき最も重要なことは、分散シナリオまたはマルチスレッドの同時ロックでロックをどのように処理するかということです。 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の公式アカウントまでご連絡ください。 |
>>: クラウドネイティブ:家を購入してからオープンするまでのストーリー
こんにちは、みんな。私はHele Women’s Networkの編集者、Xiaoweiです。私はウ...
どのような状況でウェブサイトを改訂できるのでしょうか? これは多くのウェブマスターやウェブマスターが...
現在、デジタル変革はますます多くの企業の議題に上がっており、デジタル化によってもたらされる小売業の変...
8月に百度は記事品質アルゴリズムを更新し、多くのウェブサイトからジャンクコンテンツを削除した。その結...
大企業の面接では、履歴書に Kafka が記載されていると、ほぼ確実に次のような質問を受けるでしょう...
注意深い開発者は、Apple が最近 iTunes Connect で重要な機能をひっそりとリリース...
デジタルトランスフォーメーションがビジネス展開の主流になるにつれ、デジタルトランスフォーメーションを...
今のところ、Baidu について良いことは何も言えません。Baidu は、独自の Web サイトを持...
昨日、苗叔父さんは「新浪微博封建道」という記事を書くために、ネットでファンストンの詳細情報を検索して...
月収10万元の起業の夢を実現するミニプログラム起業支援プラン著者: ジャッキー、アクティビティ ボッ...
ご存知のように、幼稚園では子どもの教育の初期段階で、将来の行動を形作るいくつかの基本原則を教えます。...
[[430075]]詳細については、以下をご覧ください。 51CTOとHuaweiが共同で構築したH...
月収10万元の起業の夢を実現するミニプログラム起業支援プランテクノロジーはランキングを最適化し、文学...
2018 年、我が国のクラウド コンピューティングは 20 年目に突入しました。国家チームに立つ3大...
つい最近、Hostcat に maximumvps に関する記事が掲載されました (maximumv...