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 公式アカウントまでご連絡ください。 |
<<: 「理解」エコシステムを構築し、エコシステムの潜在力を解き放ち、業界のデジタル変革に立ち向かう
常に進化するテクノロジーの世界では、企業、政府、個人にとって、常に最先端を行くことが重要です。このダ...
blazingfast.io は 7 ~ 8 年間運営されています。主な事業は、オランダとポルトガル...
マルチクラウド導入への関心が高まっていますが、対処すべきビジネスやワークロードが非常に多いため、ほと...
最近、Baiduは頻繁にアップデートを行っています。Baidu Webmaster Platform...
構成は、デュアル L5520、36 GB RAM、4x1TB ドライブ、RAID 10 です。データ...
このタイトルを思いついたとき、私はまだウェブサイトの宣伝に取り組んでいました。しかし、時代は変わり、...
大規模なQQデータ漏洩により、パスワードや友達サークルなどの個人情報を閲覧できる可能性があると報告さ...
クラウドネイティブへのデジタルトランスフォーメーションの概要今日は、エンタープライズのデジタル化とク...
verelox.com は、オランダのハーグに設立されたホスティング会社で、VPS、サーバーレンタル...
私はいくつかの高収益商品を運営しており、1回の取引の利益は400元近くに達することもあります。顧客デ...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますどれだけ優...
最近、世界的に権威のあるITコンサルティングおよびリサーチ会社であるガートナーは、デジタルファイナン...
インターネットプロモーションは現在一般的なマーケティング手法です。それが達成できる有効性は明らかです...
サーバー Web サイト セキュリティ トレーニングに参加する必要があるのはなぜですか?最新の統計に...
ライブストリーミングは、結局のところトラフィックのゲームです。交通費補助金がなければ、羅永浩の2回目...