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

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

推薦する

ワールドカップ食品ブランドマーケティング戦略

4年間の待機期間を経て、2018年ワールドカップが北京時間11月21日午前0時に、開催国カタールと南...

iwstack - 無料 15 ユーロ / Openstack クラウド / どの Windows システムでも使用可能

ホスト キャット グループ管理者の「morgan」がグループ内で、iwstack の再チャージで 1...

ハイブリッドクラウドが注目されるようになったのはなぜですか?いくつかの主要なクラウドコンピューティングサービスモデルについて議論する

近年、国内のクラウドコンピューティング市場は、複数の業界での徹底的な応用の傾向を示しています。特に、...

Weiboの自主メディア企画が​​本日スタート。フォロワー500万人超の「Big V」は当面応募不可。

Weiboの自主メディア企画が​​本日スタート。フォロワー500万人超の「Big V」は当面応募不可...

ウェブサイトのBaiduの重みは本当ですか?

阿成氏のブログインタラクティブSEOはオープンしてから12日目を迎えました。この間、彼はテーマのいく...

infinityhosts-512M メモリ/25G ハードディスク/G ポート/月額 7 ドル

infinityhosts は 2009 年に設立されたインドの会社です。同社が提供する VPS ホ...

vpscheap: 25% 割引、年間 7 ドル、512M メモリ/2 コア/30g SSD/2T データ転送/バッファロー、米国

vpscheap は古いユーザーに対して、すべての VPS を 25% 割引するプロモーション オフ...

百科事典ウェブサイトの新たな探究:Wikipedia が SMS リクエスト サービスを開始

北京時間2月24日朝のニュースによると、Wikipediaは発展途上市場のユーザーにWikipedi...

virmach: 日本 AMD シリーズ VPS 先行販売、年間 8.89 ドル、384M メモリ/1 コア/10gNVMe/1T トラフィック

#virmach日本vps# virmachのAMDシリーズVPS-Japan東京データセンターが、...

henghost: 国慶節 50% オフ プロモーション - 香港 CN2 サーバー + 香港高防御サーバー + 香港クラウド サーバー (OpenStack)

恒創科技は、国慶節期間中(10月12日まで)に「国慶節セール」を実施します。香港CN2サーバー、香港...

オンラインプロモーションチャネルの最も包括的な概要!

1. WeChatプラットフォームWeChatには6億5000万人のアクティブユーザーがおり、巨大な...

エンタープライズ プライベート クラウド導入ガイド

プライベートクラウドとは何ですか?まず、プライベート クラウドとは何かを簡単に見てみましょう。プライ...

最適化環境が悪いときにウェブサイトへのトラフィックを増やす方法

百度の最近の暴発により、国内の最適化環境は混乱し、非常に悪化しています。通常、ランキングを獲得するた...

Sina Weibo の曖昧なマーケティングイベントからレバレッジマーケティングを覗いてみよう

いわゆる状況を利用したマーケティングとは、マーケティング活動において販売の目的を隠し、消費者が好む環...