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

推薦する

ネットワークプロモーションとネットワークマーケティングの正しいやり方を確立する

この記事は、いくつかのアイデアとインスピレーションを提供するだけですが、実用的な操作方法は提供してい...

Frontrangehosting-簡易レビュー(768MメモリKVM)-取得しました

Frontrangehosting からメールが届き、そのメールから、同社は Total Serve...

テンセントクラウドは複数の新製品の発売によりデータからより多くの価値を引き出します

[51CTO.comからのオリジナル記事] テンセントクラウドビッグデータ技術は、最も重要な基礎技術...

ftpit-ホスト評価 60% オフ 限定クーポンコード

ftpit と連絡を取った後、担当者はhostcat ウェブサイト専用の割引コード zhujimao...

収入が突然途絶えたとき、これらの問題について考えたことがありますか?

数日前に端午節が大いに盛り上がりながら始まりましたが、百度は多くの古いウェブサイトにも悪戯をしました...

Kubernetesはまだ歴史が浅く、ローカルでの導入がパブリッククラウドでの導入を上回っている

最近、VMware は Kubernetes に関する調査を実施し、5 年間の開発歴を持つ Kube...

電子商取引サイトの内部構造 SEO最適化スキルの共有

サイト内構造の最適化は SEO 作業の基本です。適切なサイト構造レイアウトは、ユーザーが関連するペー...

zorocloud: 米国の高速/高防御VPS、月額34元から、CN2 GIA+CU2+50Gbps DDoS高防御保護

国内ホスティングプロバイダーのZorocloudは、 IDC/ISP資格を持ち、香港、日本、アメリカ...

アリババクラウドが最新のエコシステム支援計画を発表:株式市場に上場できる企業を少なくとも30社育成

9月19日午後、2018年杭州雲奇大会で開催されたエコシステムサミットで、アリババクラウドは最も包括...

servercheap: 月額 2 ドル、無制限トラフィック VPS、KVM/1G メモリ/1 コア/30g SSD/シカゴ、ロサンゼルス

2009年から運営しているアメリカのVPS業者servercheapが、シカゴデータセンター(cor...

YY: テンセントの脅威にさらされながらも「控えめに」成長

起業して7年、李雪玲はナスダック上場に一歩近づきました。北京時間10月15日夜、Huya CEOの李...

ターンキーインターネット - $3.89/年/KVM/1G メモリ/1Gbps 無制限トラフィック

Turnkeyinternet は、知らない人もいるかもしれませんが、ベテランなら知っているはずです...

大学生はどのようにして適切な金融商品を選ぶのでしょうか?

現在、市場には多種多様な金融商品が存在し、その種類も多岐にわたり、品質もさまざまです。大学生の私たち...