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年上半期:分散クラウドについて

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

推薦する

採用ウェブサイトは過去10年間で進化し、プロフェッショナルソーシャルネットワーキングプラットフォームが新たなリーダーとして台頭してきました。

オンライン採用は2000年頃に国内市場に初めて登場しました。10年以上の開発を経て、オンライン採用は...

Pacificrack: 4 月の格安米国 VPS プロモーション、年間 20.59 ドル、KVM/3.5G メモリ/2 コア/40g SSD/4T トラフィック

Pacificrack は 4 月に安価な VPS プロモーションを実施しており、小規模な Web ...

簡単な分析: 有料ランキングを理解するための4つの基本的な提案

しかし、現在、ほとんどの企業やウェブサイト構築の専門家は、「入札」は高すぎるし、まさに底なし沼だと不...

伝統的なSEOの崩壊と非伝統的なSEO手法の「合法化」について語る

導入:この記事はあくまでも個人的な意見を述べたものであり、あらゆるコメントを歓迎します。 SEO、ウ...

BigbirdWeb - 2.5 USD/1 GB RAM/20 GB SSD/200 GB トラフィック

bigbirdweb.com の特別プロモーション VPS をご紹介します。同社は 年に設立され、以...

2021年から2022年にかけて、14人のCEOから見た中国のSaaS市場

SaaS が 2021 年に入ると、風が再び強まります。資本市場の熱狂はそれ自体が物語っているが、そ...

justgロシアサーバー、cn2 giaライン、物理マシンの簡単なレビュー、justgがどのようになっているかを説明します

ロシアのサーバーは著作権などの管理が緩い場合が多く、特にロシアはヨーロッパとの接続に効果的なので、対...

インテリジェントなウェブサイト構築ソフトウェアの特徴は何ですか?なぜ企業に人気があるのでしょうか?

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますインターネ...

ウェブサイトのキーワードランキングが不安定になる理由の分析

多くのウェブマスターは、キーワードの変化が速すぎて不安定になることを懸念しています。苦労して最適化し...

医療電子商取引が「携帯電話による医薬品購入」モデルを試行

南方日報(記者/趙炳慧)スマートフォンの急速な発展により、医療電子商取引はそこに潜むチャンスに気づき...

将来の検索エンジンのターゲットグループ:SEO中毒者

このような質問を知りたいです。検索エンジン最適化業者として、主にどのような企業やクライアントにサービ...

Google Compute Engine 対 Amazon AWS: IaaS 戦争が激化

今週、Google は Compute Engine クラウド コンピューティングの商用提供を発表し...

Baiduの中国語単語分割技術について少し推測する

周知のとおり、Baidu の中国語単語分割技術は Google よりも優れています。以下はインターネ...