Redisson 分散ロック ソースコード 2: ウォッチドッグ

Redisson 分散ロック ソースコード 2: ウォッチドッグ

[[407749]]

序文

Redisson といえば、ウォッチドッグ メカニズムは誰にとっても非常に馴染み深いものです。

この記事では、ロックが正常に追加された後にウォッチドッグがどのように実装されるかについて説明します。

1 ロックに成功しました

前回の記事では、再入可能ロックのロジックを紹介しましたが、その中で RedissonLock#tryAcquireAsync メソッドは非同期ロックのロジックです。

このメソッドのパラメータを確認してみましょう。

  1. 待機時間: -1;
  2. リースタイム: ロック時にロック時間が指定されていない場合は -1、指定されている場合は指定された時間。
  3. 単位:null;
  4. threadId: 現在のスレッド ID。

tryLockInnerAsync は以前に導入されました。

ロックが成功すると null が返されます。ロックが失敗した場合は、現在のロックの残り時間が返されます。

したがって、このピースは赤いボックスでマークされた部分に入ります。

リースタイムはロック時間で、デフォルトでは指定されていないため、今日のトピックであるウォッチドッグである scheduleExpirationRenewal メソッドに入ります。

これまでのところ、次のような結論を導き出すことができます。

Redisson ウォッチドッグがロック時間を指定すると、ロック時間は自動的に更新されません。

2. ウォッチドッグ

ウォッチドッグの重要なロジックの一部は、renewExpiration メソッドにあります。

  1. 遅延スケジュール、遅延時間: internalLockLeaseTime / 3、つまり、この TimerTask は約 10 秒後にスケジュールされます。
  2. 非同期更新: すべてのロジックは renewExpirationAsync にあります。
  3. 再帰呼び出し: リースの更新が成功すると、継続的なリース更新の目的を達成するために renewExpiration 自体が再度呼び出されます。
  4. もちろん、リースを無期限に更新することはできませんので、途中で更新を中断するための何らかの判断ロジックがあります。

リース更新ロジック

これも Lua スクリプトであり、以前の Redis キーの時間を直接リセットします。

更新後、約10秒後にロック時間が30秒にリセットされます。

3 まとめ

ここまででウォッチドッグの紹介は終わりです。簡単に内容をまとめてみましょう。

ウォッチドッグは、ロック タイムアウトが指定されていない場合にのみ使用されます。

ウォッチドッグのデフォルトの更新時間は約 10 秒、internalLockLeaseTime / 3 です。

Config を通じてウォッチドッグ時間を均一に設定できます。lockWatchdogTimeout パラメータを設定するだけです。

最後に、写真を使ってまとめてみましょう。

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

<<:  PolarDB-X 2.0: 透過的な分散データベースの使用感

>>:  クラウド移行で大きなミスを避ける方法

推薦する

レスポンシブ デザインの実践: IE10 に最適化されたバージョン cnBeta の誕生

過去 2 年間で、多くのインターネット製品が、さまざまなデバイスやブラウザの制限を克服するためにレス...

淘宝ブランド陣営が縮小する一方、「新三大」は急速に拡大

李翔東漢度易社、INMAN、聯博などのブランドが相次いで自社の高級ブランドを立ち上げたことで、かつて...

Baidu ウェブマスターコミュニティ情報の解釈: タイムリーなリソース収集に関する問題

Baidu Webmaster Community が昨日ひっそりと立ち上げられました。また、Bai...

アリババが知識蒸留法を革新、その論文がトップカンファレンスCVPR 2022の口頭発表に選出

6月23日、アリババDAMOアカデミーの自動運転実験室は知識蒸留法を革新し、複数のコンピュータービジ...

SEO、SEM、WeChatパブリックアカウント運用を通じて正確なユーザーを獲得し、最大限のコンバージョンを達成する方法

SEOテクノロジーを使用して、予算ゼロで Web サイトの正確なトラフィックを 2 倍にするにはどう...

経験豊富なウェブマスターのヒント: 新規ウェブサイトの立ち上げから収益化までの徹底分析

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

プライベートクラウドには明確な「価値提案」が必要です

現在、貿易摩擦が未解決であるにもかかわらず、大企業はデジタルビジネス変革をサポートするために新しいテ...

SEO の注文を受ける際に、どのようなクライアントを避けるべきでしょうか?

前回の記事では、SEO受注層の中で絶対に逃してはいけない4つの顧客について書きました。今日は、どのよ...

YTOはリチウム電池の貨物を虚偽報告したため航空輸送資格を失った

法制晩報によると、今年10月22日に中国南方航空の機内で発生した貨物炎上事件後、中国航空運輸協会(以...

蘇寧の「コンセプト」電子商取引は本当に明るい未来をもたらすのだろうか?

中国電子商取引業界の異端児であるSuning.comについて言えば、多くの友人はそれを「裕福」、「勇...

有名酒類メーカーのネットワークマーケティングを統合する方法

今日、インターネット マーケティングが復活し、無数の中小企業がインターネットに注目しています。今日、...

古いプログラマー: 需要分析の経験あり

以前私が書いたブログ記事「満足できるコードの書き方」では、ユーザーのニーズが不確実なため、全体的な設...

ウェブサイトのユーザーエクスペリエンスはバランスが大事

多くのウェブマスターは、ユーザー エクスペリエンスの重要性を理解しています。Baidu の数回のアル...

個人のウェブサイトで収益を上げる方法をご存知ですか?

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

zgovps: 新しいオランダの VPS、年間 16.9 ドル、2G メモリ/2 コア (AMD EPYC)/25g SSD/2T トラフィック (1Gbps 帯域幅)/40G 防御

zgovps は、オランダの新しい VPS サービスを開始しました。データ センターは「Naaldw...