ZooKeeper 分散ロック キュレーター ソース コード 05: 分散読み取り書き込みロックとインターロック

ZooKeeper 分散ロック キュレーター ソース コード 05: 分散読み取り書き込みロックとインターロック

[[411638]]

前言

Curator は、分散型のコメント ライト ロック [1] とリンク ライト ロック [2] もサポートしていますが、必要に応じて InterProcessReadWriteLock を使用して、それらのソース コードを実装方法とともに確認します。

1.使用方法

  1. パブリッククラス CuratorDemo {
  2.  
  3. 公共 静的void main(String[] args)は例外をスローします{
  4.  
  5. 文字列 connectString = "127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183" ;
  6.  
  7. 再試行ポリシー retryPolicy = 新しい ExponentialBackoffRetry(1000, 3);
  8.  
  9. CuratorFramework クライアント = CuratorFrameworkFactory
  10. .ビルダー()
  11. .connectString(接続文字列)
  12. .retryPolicy(再試行ポリシー)
  13. 。建てる();
  14. クライアントを起動します。
  15.  
  16. InterProcessReadWriteLock ロック = 新しい InterProcessReadWriteLock(client, "/locks/lock_01" );
  17. ロックを取得します。
  18. ロックを解放します。
  19. ロック。writeLock()。取得();
  20. ロックを解除します。
  21.  
  22. }
  23. }

2.ソースコード

ロック書き込みはすべて InterProcessMutex に基づいて実行されるため、ここで生成されるロック名は -lock- ではなく、__WRIT__ と __READ__ に置き換えられます。

读锁加锁节ポイント名: /locks/lock_01/_c_44a8eaf8-f177-403a-92bf-9119591b54d5-__READ__0000000000、写锁解锁节ポイント名: _c_2e5dde98-c548-4f8b-a798-821ee8330eb6-__WRIT__0000000001。

ここで、ポイントの作成時およびアクセス可能な InterProcessMutex には区切りはありませんが、唯一の区切りは、internalLockLoop メソッド内であり、鍵取得結果を判断するときに区切りがあります。

ロックを再入力できるときは、StandardLockInternalsDriver#getsTheLock で現在のノードが最小ノードであるかどうかが判断されます。

一方、書き込みロックは、InterProcessReadWriteLock#InterProcessReadWriteLock 中に getTheLock メソッドを再書き込みします。

読む 锁加锁

ロックが追加されると、現在のプログラムは直接成功を返します。つまり、現在のプログラムの書き込みは相互に影響しません。

他のオンラインプロセスの場合は、すべての子ノードが遍在します。

子ノードには書き込みが含まれており、子ノード内の順序セットのインデックスが書き込みのインデックスよりも小さいため、直接取得できます。そうでない場合は、取得できません。

子ノードは書き込みを含まず、現在のノードの子ノードの順序セットのインデックス < Integer.MAX_VALUE (2147483647) であれば十分です。

つまり、2147483647 が最もサポートされています。

書き込み禁止

ライトアップは直接使用できる、InterProcessMutex のアクセス可能なアクセスポイントであり、ここではライトとライト、およびライトとライトは両方とも同一です。

3. 联锁

アレーロックの使用法は、InterProcessLock をセットに解放し、その後追加のロックを実行することです。

追加は一括セットを実行し、逐次追加を実行します。

4.まとめ

本明細書では、ライトアクセスとアタッチアクセスについて説明したが、これらはいずれも、基本的なアクセス可能なアクセスに基づいてパッケージ化されており、アクセス可能なアクセスの概念を理解しているので、次のアイデアを参照してください。

引用リンク:

[1]共有再入可能読み取り書き込みロック: https://curator.apache.org/curator-recipes/shared-reentrant-read-write-lock.html

[2]マルチ共有ロック: https://curator.apache.org/curator-recipes/multi-shared-lock.html

<<:  エッジ コンピューティングはどのような問題を解決し、どのようなモデルを使用しますか?

>>:  Kubernetes の実験環境を素早く構築するにはどうすればよいでしょうか?

推薦する

2020 年のマルチクラウド環境の長所と短所

[[333918]]業界の専門家やアナリストは、ビジネス開発のために複数のパブリック クラウド イン...

自分を分析する: 優秀で尊敬されるSEO担当者になる

正直に言うと、私はほぼ1年間失業しています。そして、まだ失業中の人たちにとって、私がまだ SEO に...

ボストン・グローブ紙が PTC を 2018 年の「最も働きがいのある会社」に選出

PTC (NASDAQ: PTC) は、ボストン グローブ紙の第 11 回年次従業員調査で、マサチュ...

WeChatが自社メディアを必死に守ろうとする理由

はじめに:ここ数日、「WeChatが最も厳しい新政策を推進」というニュースが流れている。Sina W...

Baidu インデックスのアップグレードによるウェブサイトコンテンツページのランキング優位性

Baidu の検索システムの全面的なアップグレードにより、大量の高品質コンテンツをより速く、より完全...

ハイブリッドおよびマルチクラウド アーキテクチャを実現する 5 つのテクノロジー

[[409539]]ハイブリッドおよびマルチクラウド アーキテクチャは高価で複雑になる可能性がありま...

stablebox-windows/$5.9/768m メモリ/30g ハードディスク/1T トラフィック

Stablebox は、Hypernia (2002 年にオンライン ゲーム事業を開始) 傘下のブラ...

Baiduの外部リンクツールから、Baiduが収集している外部リンクを確認できます。

数日前、私はGoogleウェブサイトコンソールとYoudaoを通じてアンカー外部リンクを照会する記事...

scalahosting: 月額 10 ドル、ダラス VPS、2GB RAM/50GB SSD/無制限帯域幅

scalahosting を紹介します。2007 年に設立され、主に米国とヨーロッパで仮想ホスト (...

モーメントをスワイプすることがますます難しくなっている今日、これは突破口となるかもしれない

月給5,000~50,000のこれらのプロジェクトはあなたの将来です誰かが私と同じように感じているか...

タグ: ソーシャル ネットワーキング サイト、見つけやすい、分析

大手ソーシャル ネットワーキング サイトと比較すると、Yixun は小規模で新興のソーシャル ネット...

斗宇は前進し、胡耶は後退する

テンセントの主導でDouyuとHuyaが合併し、ゲームライブストリーミングトラックのリソースの統合が...

BlueVM 期間限定特別版 - 1GB メモリ KVM 月額 5.99 ドル/3 コア/30GB ハードディスク/2TB トラフィック

bluevm はニューヨーク州バッファローのデータセンターのハードウェアをアップグレードし、割引価格...

ワイヤレスウェブサイト最適化の焦点とツールアプリケーションの紹介

最近、会社の戦略が徐々にPC側からワイヤレス側に移行しているため、ほとんどのややフォーマルなインター...

外国貿易サイトのコンバージョン率を向上させるための見落とされがちな2、3の提案

経済危機により、海外の人々は安いものを買いたいという需要が高まっており、これは外国貿易を行っている私...