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: 透過的な分散データベースの使用感

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

推薦する

「エコーSEO」と「テキストSEO」の確立方法

おそらく多くのウェブマスターは、レスポンスSEOとテキストSEOについて聞いたことがありません。実は...

softshellweb: バレンタインデー、米国/オランダ、無制限トラフィック VPS、年間 25 ドルから、1G メモリ/1 コア/20g SSD、PayPal/Alipay

Softshellweb は、2 月 14 日より、米国西海岸のサンノゼとオランダのアムステルダムの...

Wanlian は 2015 年データセンター DCIM 管理 SaaS プラットフォーム イノベーション製品賞を受賞しました

最近、2015年中国ソフトウェア会議が北京で開催されました。会議の重要な部分として、主催者の中国情報...

グルメな人は IaaS、PaaS、SaaS をどのように理解すべきでしょうか?

こんにちは、みんな。クラウドコンピューティング、クラウドサービス、クラウドプラットフォームなどの登場...

UGC製品は生死を分けるゲームに直面する可能性がある

これは古い記事なので、今再検討しています。この 2 日間、私の友人グループでは、Xiaohongsh...

安定性とウェブサイトの最適化の関係について

検索エンジンの観点から見ると、ウェブサイトの安定性は非常に重要です。したがって、Webサイトを構築す...

企業のWeiboマーケティングで犯してはいけない間違い

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス微博マーケティングで注意...

virmach - $12/年/1g メモリ/2CPU/30g SSD/2T トラフィック/G ポート/ロサンゼルス/ダラス

virmach の特別な openvz VPS には、SSD ディスク raid10、solusvm...

高品質のウェブサイトを構築するにはどうすればいいでしょうか?

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

A5マーケティングチームがZACにインタビュー: ZACがSEOの最近の動向について語ります

A5 Fangfang: 皆さん、こんにちは。今日、A5 マーケティング チームが招待したゲストは、...

レジストリ: 分散システムへの対応方法

サービス検出の概念は、実際には私たちのプロジェクトで長い間使用されてきましたが、あまり注目されていな...

競争やツールを利用して自分を宣伝する方法を学ぶ

今日は、A5のウェブサイトに記事を投稿するのは初めてです。一生懸命努力すれば、良い結果が得られるとず...

個々のウェブマスターは、自分のウェブサイト上の広告のクリック率をどのように向上させることができるでしょうか?

以前、個人のウェブマスターがお金を稼ぐ方法について語っている有名なブログを見ました。現在、オンライン...

クラウド移行: ビジネスをクラウドに移行する方法と理由

ビジネス アプリケーションがまだクラウドに移行していない場合、多くの調査により、企業はクラウドへの移...