1 ローカルロック よく使用されるロックは、JDK の組み込みロックである synchronize または Lock です。これらは現在のプロセスのみをロックでき、モノリシック アーキテクチャ サービスにのみ適用されます。分散マルチサービス インスタンス シナリオでは、分散ロックを使用する必要があります。 2 分散ロック 2.1 分散ロックの原理 トイレピット理論 同時に 1 つの場所に移動して「ピットを占領」することができます。
スピンで回転できる Redis、DB、またはすべてのサービスがアクセスできる任意の場所に移動することで、「ピットを占有」できます。 2.2 分散ロックの進化 フェーズ1
問題のシナリオ setnxはピットを占有しますが、ビジネスコードが異常であるか、実行中にプログラムがクラッシュします。つまり、ロック削除ロジックが正常に実行されず、デッドロックが発生します。 解決策: ロックが自動的に期限切れになるように設定し、削除されなくても自動的に削除されるようにします。 フェーズ2
問題のシナリオ setnxを設定した後、有効期限を設定しようとしましたが、クラッシュして再びデッドロックが発生しました 解決策: 有効期限とプレースホルダーの設定はアトミック操作である必要があります。 redisはsetNxExコマンドの使用をサポートしています フェーズ3
フェーズ4 すでにロック値と UUID を取得しましたが、期限が切れています。他の人がロックを取得して新しい値を設定したため、if の後、他の人のロックが削除されました!!つまり、ロックの削除はアトミック操作ではありません。
問題のシナリオ
ロックを削除するには、アトミック性を確保する必要があります。 redis+Lua スクリプトを使用します。 ステージ5 ロック/ロック解除がアトミック操作であることを確認する
ロック[プレースホルダー+有効期限]とロック削除[判断+削除]のアトミック性を確保します。さらに難しいのは、ロックの自動更新です。 要約する 実はもっと面倒なのが、ロックの自動更新です。そのため、大企業でも中小企業でも、これらの問題を解決するRedissonを直接選択します。私たちは車輪の再発明をしたくはありませんが、問題が発生した場合に迅速にトラブルシューティングして問題を特定できるように、フレームワークがどのような問題を解決するのかを知る必要もあります。 この記事はWeChatの公開アカウント「JavaEdge」から転載したものです。下のQRコードからフォローできます。この記事を転載する場合は、JavaEdge 公式アカウントまでご連絡ください。 |
<<: 「理解」エコシステムを構築し、エコシステムの潜在力を解き放ち、業界のデジタル変革に立ち向かう
まず、この方法を言うと、お世辞のように思われるかもしれませんが、それは関係なく、皆さんにこの方法と経...
[51CTO.com からのオリジナル記事] Infrastructure as a Service...
6月22日と28日には多くのウェブサイトが処罰された。ほとんどのウェブマスターは、これはウェブサイト...
成都小人居科技のブランド「加速クラウド」は、新しい高防御コンピュータルーム「四川西部雅安ビッグデータ...
ソフト記事とは何ですか?ハード広告と比較して、百度百科事典はソフト記事を「形式に縛られないテキスト表...
月収10万元の起業の夢を実現するミニプログラム起業支援プランミニプログラムは、現在、WeChat エ...
edis.at は、今年の第 3 四半期の LEB ランキングで 4 位にランクされました。prom...
Zorocloudは現在、全サイト割引プロモーションを実施しており、割引率は38%までとなっています...
ヨーロッパにおけるフランスの重要性は、ほとんどの人が知っているはずです。データセンターとして、フラン...
jino.ru は、2003 年から運営されているロシアのホスティング プロバイダーです。主な事業は...
モバイルインターネット時代の静かな到来は私たちの生活様式を変えつつあり、同時に多くのデザイン勢力がモ...
パフォーマンス、セキュリティ上の懸念、高コストは、組織がワークロードをクラウドからデータセンターに移...
みなさんこんにちは。私の名前はQu Yuです。私は nofollow タグが特に好きです。以前、大規...
個人アカウント、パブリックアカウント、ビデオアカウントに続き、WeChatは新しいミニプログラム「シ...
[[235661]]概要: 5 つの調査結果は、コンテナの使用傾向を把握するのに役立ちます。より多く...