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 公式アカウントまでご連絡ください。 |
<<: 「理解」エコシステムを構築し、エコシステムの潜在力を解き放ち、業界のデジタル変革に立ち向かう
オープンソースデータベースの分野に、設立されてまだ5年ちょっとの若い会社があります。主力製品であるT...
dedipathはどうですか? DediPath Denver Data Center はいかがでし...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますアンカー ...
本日の記事では主に企業のソフト記事の書き方を紹介したいと思います。まず、企業ソフト記事とは何かを理解...
inceptionhosting は評判が良く、VPS 品質が保証されているサービス プロバイダーで...
クラウドゲーム丨調査レポートコア要約:市場発展: 2021年、中国のクラウドゲーム市場規模は34億元...
多くのウェブマスターは、「プレッシャーフィードバック」の意味を理解していないと述べました。現在は「ク...
IT テクノロジーにおいて、ネットワーク ノード機能全体の仮想化に対する要件が高まり続けるにつれて、...
原題: 対立とチャンス: ワールドカップ「インターネット」イベント毎年のワールドカップは中国のインタ...
PieLayerは2001年から4年間VPSサービスを提供しています。逃げる可能性は低く、サービスは...
3月に「コンテンツアルゴリズム」を読み、レコメンデーションエンジンについてより体系的に理解することが...
国内のモバイルインターネットは急速に発展しており、企業の具体的な実践事例を研究することは、この分野に...
Baidu は 2013 年第 1 四半期に頻繁に調整を行い、多くの SEO ヒーローが涙を流しまし...
世界はまだ終わっていないが、百度製品が引き起こした「外部リンク終末」は静かに到来した。外部リンクの時...
Faconhost は最近、ロサンゼルスのデータセンターに新しい VPS シリーズを追加しました。A...