Redisson 分散ロック ソースコード フェアロック リリース

Redisson 分散ロック ソースコード フェアロック リリース

[[408803]]

序文

ウォッチドッグ メカニズムは、RedissonBaseLock#scheduleExpirationRenewal メソッドにあります。このフェアロックとアンフェアロックの間には違いはありません。

前に学んだように、公平なロックが失敗すると、現在のロックは待機キューに配置され、Java コードのループを通じてロックの取得が試行されます。

1. ロック解除

アクティブリリース

ソースコード: RedissonFairLock#unlockInnerAsync

  • KEYS[1]: ロック名、anyLock;
  • KEYS[2]: ロック待機キュー、redisson_lock_queue:{anyLock};
  • KEYS[3]: 待機キュー内のスレッドロック時間のセット、redisson_lock_timeout:{anyLock}。ロックタイムスタンプに従ってセットに格納されます。
  • キー[4]:redisson_lock__channel:{anyLock};
  • ARGV[1]:LockPubSub.UNLOCK_MESSAGE;
  • ARGV[2]: ロックタイムアウト30000;
  • ARGV[3]: UUID:スレッドIDの組み合わせ58f6c4a2-9908-4957-b229-283a45359c4b:47;
  • ARGV[4]: currentTime 現在のタイムスタンプ。

このロジックのハイライト部分はマークされており、重要なポイントはロックを解除することです。

  1. キューにロックされ、タイムアウトの場合はキューから直接削除されます。
  2. ロックにより再入回数が減ります。削減後、再入回数が 0 より大きい場合は、タイムアウトがリセットされます。 0 より大きくない場合は、ロックは直接削除されます。

このようにして、他のスレッドは待機キューからロックを取得し始めます。

タイムアウト削除

ロックのロックと解放を行う Lua スクリプトでは、最初の段落は常に while true do xxx であり、キュー内のタイムアウトしたロックを削除するために使用されます。

ロックを保持しているスレッドの解放は、不正なロックと変わりません。ロックがタイムアウトするか、サービスが停止すると、ロックは自動的に解除されます。 (これは anyLock を指します)。

2. まとめ

フェアロックの解放もアクティブ解放とタイムアウト解放に分けられます。

アクティブリリース、つまりリリースロックを自分で呼び出します。

タイムアウト削除には 2 種類あります。 1 つは、ロックを保持しているスレッドのタイムアウト削除です。このロックにもタイムアウト期間 + ウォッチドッグの更新が含まれているため、これは不公平なロックと変わりません。もう 1 つは、キュー内でタイムアウト削除を待機することです。毎回ロックを取得する前に、最初の待機スレッドのタイムスタンプがタイムアウトしたかどうかを判断し、ロックを解除する必要があります。

この記事はWeChatの公開アカウント「Programmer Xiaohang」から転載したもので、以下のQRコードからフォローできます。この記事を転載する場合は、プログラマーXiaohangの公式アカウントまでご連絡ください。

<<:  クラウド ネイティブ 2.0: 今検討すべき 3 つの DevOps 戦略

>>:  OpenHarmony 分散ソフトバスプロセス分析 v1.0丨2。ソフトバスを開いて接続を確立する

推薦する

Alibaba Cloud、コア製品の完全なサーバーレス化を発表

11月3日、2022年雲奇カンファレンスで、アリババクラウドインテリジェンスの張建鋒社長は、新しいク...

ssdvps - $21/年/1g メモリ/1g スワップ/30gSSD/2T トラフィック/ロサンゼルス/カナダ

ssdvps.com は 年に設立され、かなり長い間存在しています。通常、ロサンゼルス、バッファロー...

クラウド コンピューティングに切り替える理由は何ですか?

AWS、Google Cloud、Microsoft Azure などのパブリック クラウド サービ...

Kubernetes クラスターの容量とリソースを管理する方法

[51CTO.com クイック翻訳] ご存知のとおり、システム リソースは無制限ではありません。大規...

ウェブサイトのリンクを最適化する方法

優れたウェブサイトの構築Google の使命は、世界中の情報を整理し、世界中の人々がアクセスして使え...

chicagovps-独立記念日/すべてのVPS/複数のコンピュータルームが50%オフ

アメリカとカナダの独立記念日が近づいており、多くの企業が活動することが予想されます。chicagov...

Virpus - 創業10年のブランド、シアトルのXen PV仮想VPSが40%オフ、生涯価格

Virpus は本日、全製品 (SSD ハード ドライブのみ) が 40% オフとなる 2 日間の ...

クラウド コンピューティング アーキテクチャにエッジ コンピューティングを追加することの長所と短所

エッジ コンピューティングは、すべての IoT デバイスやワークロードに適しているわけではありません...

推奨: アトランティック クラウド VPS-256Mkvm/1T トラフィック/月額 5 USD (2 か月間無料トライアル)

これまでHostCatでも3回ご紹介させていただいたAtlanticは、1994年創業の実績豊富な会...

中小企業向けウェブサイトを最適化する際に注意すべきいくつかのポイント

2012年はオンラインマーケティングの新時代となるでしょう。ますます多くの伝統的な企業がオンラインマ...

BandwagonHost VPSの夕方のピーク時間帯におけるUSCA_4データセンターの簡単な評価により、それが適切かどうかを判断します。

Bandwagonhost VPS については、皆さんもよくご存知だと思います。現在、当社は 8 つ...

百度の重みをどう判断するか

最近、部署の社員が百度重みについて議論しているのをよく耳にします。私は、ウェブサイトの百度重みの変化...

ライブストリーミング販売に関する15の真実!

感染症の流行以来、数え切れないほどの企業が大きな変化を遂げてきました。最も目を引くのは、ライブストリ...

マルチメディア シングス プレーヤーが、より適切なオーディオおよびビデオ プレーヤーの選び方について語ります

序文近年、HTML5 技術の普及、モバイル デバイスの急速な成長、トラフィック料金の継続的な低下によ...