序文ロックとロックの再入を理解した後、理解すべき最も重要なことは、分散シナリオまたはマルチスレッドの同時ロックでロックをどのように処理するかということです。 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の公式アカウントまでご連絡ください。 |
>>: クラウドネイティブ:家を購入してからオープンするまでのストーリー
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています6月29日...
2020 年に始まった COVID-19 パンデミックは、組織がアプリケーションのオンライン実行を維...
Hawkhost は、アメリカ合衆国建国記念日にプロモーションを実施しています。ここでは、仮想ホスト...
[51CTO.com クイック翻訳] Google Cloud は、エンタープライズ ソフトウェア大...
キーワードはウェブサイトにとって非常に重要です。キーワードはウェブサイトのラベルです。ユーザーはこれ...
パンデミックの間、パシフィックラックは困難を乗り越え、ハードウェアを一括インストールしました。短期的...
従来のネットワーク ファイアウォールは消滅しつつあるか、すでに消滅しつつあります。業界の専門家は、ク...
SEO 最適化におけるウェブサイトの外部リンクの役割はよく知られていますが、検索エンジンがウェブサイ...
画像提供: ドラドラです。10年以上Google SEOに携わり、セブンイレブン、マイクロソフト、テ...
[[391713]] [51CTO.com クイック翻訳]現在ハイブリッド クラウドを構築する場合、...
chicagovps からメールを受け取りました。今年も終わりに近づいていますが、chicagovp...
Hostyun は、日本の VPS を販売するために東京にサーバーを配備しました。このサーバーはデフ...
私は4年間SEOに携わっており、大小さまざまなアルゴリズムのアップデート、ウェブサイトの降格、Kステ...
自分のサイトが検索エンジンによってペナルティを受けたときは、まず自分のサイトがなぜペナルティを受けた...
多くの新しいサイトがオンラインになるとすぐにさまざまな最適化作業を開始するという状況に遭遇するかもし...