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 の実験環境を素早く構築するにはどうすればよいでしょうか?

推薦する

TIC 2018 セーフハウスが再び秘密を明かす: 信頼できるブロックチェーンがデータ限定の「循環ゾーン」を構築

信頼できるデータ流通の問題を解決する業界初の製品として、「Safe House」の登場は一時大きな議...

ウェブサイトのランキング最適化の最初のレッスン: Baidu はどのようにして即時の包含を実現するのでしょうか?

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスウェブサイトの SEO ...

2018 城外泉小紅書プロモーションの秘訣 - 中秋節

月収10万元の起業の夢を実現するミニプログラム起業支援プラン成外泉の中秋節小紅書プロモーションのヒン...

馬化騰:インターネットを国家の主要な発展政策に位置付けることを推奨する

南方日報(特派員/李春江)「こんなに長い間会議に出席したことはなかった。全国人民代表大会と中国人民政...

SEO 最適化は実際の実践に重点を置く必要があります。机上の話だけではマーケティングの達成には不十分です。

ここ 2 日間は休んでいて、退屈だったので家にいてウェブマスター フォーラムを閲覧していました。休憩...

簡単な分析: ロングテールキーワードを一括でマイニングする方法

ほぼすべての SEO 担当者は、Web サイトの検索トラフィックのほとんどが、単一検索の少ないロング...

Zhihu は Baidu Knows に「勝った」のか?

質問がある場合、「 Baidu Knows」または「 Zhihu 」を使用して検索しますか?本記事で...

ウェブサイトのホームページにあるキーワードやコンテンツの説明は SEO に影響を与えますか?

月収10万元の起業の夢を実現するミニプログラム起業支援プラン多くのウェブサイトでは、ページにキーワー...

ステーショングループ?勝てるかどうかわからない戦いには出かけないでください!

サイト グループを設定する理由については、人それぞれ理由があります。私が説明したい理由は非常に単純で...

ソーシャルリソースを使用して外部リンクを構築する

外部リンクの構築は、ウェブサイトの最適化担当者にとって、常に日々の必須作業です。では、安定した安全な...

3B戦争はBaiduを変えるか?百度に起こりうる6つの変化

【はじめに】3B戦争後、百度は検索分野でのリーダーシップと本来の戦略思考を見直すのか?テンセントのよ...

iniz-バレンタインデーVPSプロモーション/年間わずか8ドル

iniz はバレンタインデー前に VPS プロモーションを開始しました。iniz はまだ新製品を発表...

面接で必ず聞かれるJVMランタイムデータ領域について理解していますか?

[[411100]]序文Java仮想マシンのランタイムデータ領域は面接でよく聞かれます。市場には多く...

インターネットは人々を豊かにした:「ディアオシ」が豊かになった後に何が起こったか

グローバリゼーションとインターネットは世界を近づけただけでなく、中国人が貧困から富裕層になるまでのプ...

百度の入札ランキングから百度検索のユーザー体験について語る

今日の中国のインターネット環境では、多くのSEO担当者が悲惨な状況に陥っています。1社の独占により、...