序文一般的な作業でよく使用される分散ロックは、Redis と ZooKeeper に基づいています。上記ではRedissonロックに関連するソースコードを紹介しました。それでは、ZooKeeper に基づくロックを見てみましょう。それが Curator フレームワークです。 Curator ロックには多くの種類があります。この記事では、共有再入可能ロックを分析します。 記事が長すぎると読みにくくなることを考慮したので、記事を適切に分割しています。 1環境設定このマシンには3つのノードがあります バージョン: 3.7.0 システム: macOS インストール方法: brew install zookeeper Curator Maven 依存関係バージョン: 5.1.0
2 ロックの例詳細については公式ドキュメント[1]を参照してください。 ロックする前に ロックする前は、ZooKeeper にはノード/Zookeeper が 1 つだけあります。 ロック /locks/lock_01 パスにロックを追加します。 ロック後:
3 ソースコードをロックするPS: 以下のコード スクリーンショットのコード スタイルは、Curator ソース コードのコード スタイルです。 入り口 プロセス間ミューテックス#内部ロック まず、threadData から現在のスレッドを取得します。ここでは現在のスレッドは確実に存在しないため、attemptLock メソッドを入力します。 この方法には、後で紹介するロック再入のロジックも含まれます。 ロック ロック内部#ロックの試行 核となる部分は次の 2 行です。
一時的なシーケンスノードを作成する StandardLockInternalsDriver#createsTheLock ノードのモードが CreateMode.EPHEMERAL_SEQUENTIAL であることがわかります。これは、これが一時的なシーケンシャル ノードであることを意味します。 CreateBuilderImpl#forPath(java.lang.String, byte[]) を入力します。 client.getDefaultData() はローカル IP アドレスです。 adjustPath メソッドは、その名前が示すように、パスを調整するために使用されます。 UUID が生成され、/locks/lock_01 に連結されて、/locks/lock_01/_c_UUID-lock- になります。 一時的なシーケンシャルノードが作成されるため、末尾にシーケンスが自動的に追加され、最終的に /locks/lock_01/_c_UUID-lock-0000000000 になります。 ノードの具体的な作成は CreateBuilderImpl#pathInForeground にあります。 一時ノードを作成します。パスが存在する場合は、正常に作成されます。パスが存在しない場合は作成に失敗します。 作成に失敗した場合は、まずパスを作成し、次にノードを作成します。 4 結論この記事では、ZooKeeper をベースにした分散ロック フレームワークである Curator の使い方と、ロック プロセス、ソース コード分析について主に紹介します。 内容の概要は次のとおりです。 注目すべき重要なポイントは次のとおりです。
参考リンク: [1]ZooKeeper共有再入可能ロック: https://curator.apache.org/curator-recipes/shared-reentrant-lock.html この記事はWeChatの公開アカウント「Programmer Xiaohang」から転載したもので、以下のQRコードからフォローできます。この記事を転載する場合は、プログラマーXiaohangの公式アカウントまでご連絡ください。 |
<<: 消費者実装ロジック - Kafka 知識システム (IV)
>>: Docker 以上の 8 つのオープンソース コンテナ管理ソリューション
Kubernetes は現在最も人気のあるコンテナ オーケストレーション プラットフォームであり、実...
hncloud(ワーナークラウド、香港ユナイテッドコミュニケーションズインターナショナルリミテッドの...
昨日、zgovps はロサンゼルス データ センターを拠点とする純粋に国際的な VPS シリーズ「ロ...
[[347509]]著者: ypaapyyang、Tencent WXG バックエンド開発エンジニア...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますテクノロジ...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますA5ベンチ...
Bluehost は、サイバーマンデーに 6 時間のクレイジーなプロモーションを実施しています。月額...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています教育業界に...
最近は個人のウェブサイトが増えており、ランキング付けがますます難しくなっています。多くのウェブサイト...
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス最近何がより速く情報を広...
フレンドリー リンクの交換は、SEO 最適化プロセスの非常に一般的かつ重要な部分であるため、フレンド...
背景OpenTelemetry プローブOpenTelemetry (略して Otel、最新バージョ...
良心的なホスティング会社である Hostwinds は、完璧なサービスを提供します。 hostwin...
1. WeChatパブリックアカウントメッセージプッシュの定義開発モードでは、エンタープライズ メッ...
数日前、robots.txt のルールに関する誤解について書き、Baidu と Google のロボ...