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

推薦する

特徴重み処理と最終ランキング(パート1)

SEO最適化の詳細について記事を書こうと思います。なぜなら、SEOは細部から始めるべきだとよく言われ...

インターネットマーケティングにより同社の業績は3倍に

みなさんこんにちは。私は上海出身の劉波です。今日はオンライン販売の経験を皆さんと共有できることをとて...

PRはウェブマスターにとって根深い問題である

PR は、すべてのウェブマスターにとって消えることのないコンプレックスであると言えます。 PR は、...

江蘇省史上最大のオンライン求人詐欺事件で12人が有罪判決

今年3月、江蘇省高郵警察は大規模なオンライン求人詐欺事件を摘発し、容疑者12人を逮捕した。被害者は全...

噂を流布したインターネットサイトが多数捜査され、法律に基づいて処罰された。

新華網、北京、3月30日(新華社) - 中国サイバースペース管理局の報道官は本日、噂を流布する多数の...

SEO初心者のためのウェブサイトの宣伝方法のヒント

私は SEO の初心者で、SEO の複雑さを理解し始めたばかりです。私は SEO は非常に単純なもの...

JVMがバイトコード命令をどのように消化するかを見る

記事を書いてタイトルを考えるのは本当に頭の痛い作業です。文章はより技術的であり、堅苦しすぎると思われ...

海外の無料DNSサービス6選

DNS は、ドメイン ネーム システム (Domain Name System または Domain...

kirincomm: 50%割引、日本ソフトバンク回線クラウドサーバー、200Mbps帯域幅、月額44元から

Hostcatは、主に日本の東京(Equinix、COLT)と大阪(Equinix)データセンターで...

アリババはモバイルインターネットに不安、ジャック・マーは社内でライワンを強力に推進

テンセントテクノロジーは10月21日、「ワイヤレス分野で実績がなければ、株式公開は考えないほうがいい...

Ramnode - 独立記念日 VPS 6.8% オフ

今日はアメリカの独立記念日です。Ramnode は VPS プロモーションで 38% 割引を提供して...

実践サロンの必需品 | Qiu Ma が APP 運用パスから上位 10 チャネルの長所と短所を分析します

店内のサロンを見逃してしまったことを残念に思うお客様が多すぎました!ウェイターは、秋馬サロンでのスピ...

12月27日のXiaomi 3 16GB版の売れ行きが低迷した理由を簡単に分析

周知のとおり、小米は創業当初から数量限定で製品を販売してきました。諺にあるように、「希少性は価値を生...

dmit 香港 VPS レビュー: 香港 VPS への高速直接接続、ウェブサイト構築と「言葉では言い表せない」

最近、dmitにいくつかの変化がありました。最も重要なのは、香港データセンターがアップグレードされ、...

新たな統合と包括的な最適化! Parallels Desktop 14 メジャーアップグレード分析

[51CTO.com からのオリジナル記事] Parallels が昨年 9 月に Parallel...