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 公式アカウントまでご連絡ください。 |
<<: 「理解」エコシステムを構築し、エコシステムの潜在力を解き放ち、業界のデジタル変革に立ち向かう
[[346377]]建国記念日を前に、NVIDIA による ARM 買収のニュースはテクノロジー界で...
単一の Redis サーバーは、数万から数十万の QPS を処理できます。キャッシュの場合、通常は読...
インターネットで生き残りたいなら、インターネット思考が必要です。多くの企業ウェブサイトは、インターネ...
Baidu が更新されるたびに、誰もがため息をつくでしょう。「ねえ、なぜ私のランキングはまた下がった...
5Gは何ができるのか?これは、過去 2 年間、誰もが探求してきた質問です。 4月15日、百度はオンラ...
ご存知のとおり、ウェブサイトの降格は多くのウェブマスターが経験したことがあるものです。降格の深刻な兆...
ガートナーの予測によると、パブリッククラウドサービスに対する世界のエンドユーザーの支出は、2020年...
私はSEOERとして1年以上働いています。SEO実践者の未来はどこにあるのかとよく思います。SEO実...
Baidu のホームページでキーワード検索を入力すると、検索結果ページにジャンプし、ブラウザの UR...
パブリック クラウドの導入の増加により、企業は SD-WAN の利点を活用する方法の調査を開始せざる...
RegVPSはロシア(2009年)に登録された会社です。現在、ロシア、スイス、ドイツ、米国の4つのデ...
hostyun が最近日本の大阪で使用したサーバーは、ハイエンドの AMD プラットフォームを使用し...
「百度を検索すればわかる」、かつては百度の主なプロモーションだったが、今では誰もが知る存在となり、数...
AIがクラウドコンピューティングをどう変えるかクラウド コンピューティングは、オンライン アクティビ...
多くの人は、一定期間内に何らかのデータを生成する必要があるため、新しいサイトを最適化します。含まれる...