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 公式アカウントまでご連絡ください。 |
<<: 「理解」エコシステムを構築し、エコシステムの潜在力を解き放ち、業界のデジタル変革に立ち向かう
本日執筆した記事は、プロジェクト マネージャーや SEM スーパーバイザーの観点から、入札の「遊び」...
世界のアプリ経済は急成長期にあります。App Annie によると、アプリストアでの消費者支出は 2...
ウェブサイトのコンテンツや外部リンクの重要性は誰もが知っていますが、多くのウェブマスターは内部リンク...
2019年7月時点、ByteDance(以下、「ByteDance」)は、同社製品の全世界におけるデ...
[[429685]]こんにちは、みんな私はあなたの学習と成長のパートナーですキャプテンRocketM...
世界的に有名な完全管理型ホスティング プロバイダー Liquidweb は本日、引き続き完全管理型で...
4月26日から27日にかけて、ファーウェイクラウドスタートアップサポートプログラム成都ステーションW...
少し前、いくつかのプラットフォームで多くの友人が次のような問題について不満を漏らしているのを見ました...
中国の共同購入サイトの数は2,919に減少し、毎日5.9サイトが消滅している。昨日、共同購入ナビゲー...
「クラウド コンピューティングが、5 人の若い有名人の結婚と、Weibo での 4 人の有名人の浮気...
企業は、パブリック クラウドを採用するか、プライベート クラウドを採用するかという選択に直面すること...
今年1月、美団は本社を北京望京国際研究開発パークに移転した。南北2棟からなる4階建ての連結ビルでは、...
最近、福建省のSEOについて考えています。以前、自分自身に学ぶ機会を与えるだけでは感情的に十分ではな...
私は今年、新しく立ち上げられ、慎重に管理されているウェブサイトのいくつかをフォローして観察し、他の人...
一般的に、中小企業のウェブサイト所有者は、最初はあまり気にしていませんでした。彼らは自分の企業がより...