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。ソフトバスを開いて接続を確立する

推薦する

ブログの外部リンクの効果を無視しないでください ブログの外部リンクを改善する 5 つの方法

ブログの外部リンクに関しては、ここ2年ほどやっています。応募されたブログは大小問わず多数ありますが、...

ほとんどのリベートウェブサイトはねずみ講に関与しており、すぐに現金を返金することはできない

最近、「福州100%事件」と「温州百業連盟事件」が各界から大きな注目を集めています。 両事件とも、リ...

使用量が250%増加し、このレポートによりサーバーレスが再び注目を集める

[[406964]]この記事は、Datadog の最新の Serverless レポートの解釈です。...

SEOブログの現状:話し手は真剣だが聞き手は無関心

話し手は真剣だが、聞き手は無関心である(発音が分からない場合は、ピンインの URL を参照してくださ...

ソフト記事に対する主要検索エンジンの応答速度とSEOでの活用の分析

いわゆるソフト記事とは、いくつかの記事や出来事の語りを通して、読者に無意識に、いつの間にか商品を理解...

SEOで見落とされがちな4つの運用エラー

おそらく、多くの初心者SEO担当者は、最適化の役割はウェブサイトへのトラフィックを増やすことだという...

地域ウェブサイトの運用と保守の最適化のプロセスにおける外部リンク構築のアイデアの簡単な分析

ウェブサイトの最適化コンテンツと外部リンクは切り離せない関係にあります。著者は日々ウェブマスターフォ...

ウェブサイトを構築するのは高価ですか? West Digital Cloudのウェブサイト構築60%オフプロモーションは業界最安値を破る

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますインターネ...

azzavps-1.5g メモリ/15g SSD/1T トラフィック/ニューヨーク/月額 5.5 ドル

ニュージーランドの VPS 業者である azzavps は、同社初の SSD ハード ドライブ VP...

WeChatマーケティングプロモーションを行うには? WeChatマーケティングスキルを分析!

なぜこれを書こうと思ったのですか?ほとんどすべての人がWeChatを持っているからです。 WeCha...

エッジからクラウドへの進化における4つの課題

世界中の組織は、毎日生成される前例のない量のデータによってますます困難に直面しています。モノのインタ...

Alipay、WeChat、Baiduのミニプログラムの新しいロジック

ミニプログラムの動作ロジックの観点から見ると、プラットフォームに寄生しており、プラットフォームのトラ...

2022年のトップ10消費者市場トラック!

2022年上半期、市場の成長率は鈍化し、消費者の嗜好は「大手ブランドを買うか、コストパフォーマンスを...

SEOについて - オンサイト最適化

SEO に関しては、多くの人が少しは知っていると思います。しかし、SEO(検索エンジン最適化)の本当...