分散ロックは「スレッド同期」の延長です最近、「分散ロック」が初めて適用されました。考えてみてください。分散ロックは孤立したスキルポイントではなく、実際にはホスト間のスレッド同期です。
スタンドアロン サーバーは、特定のメモリ ヒープを共有することで、ロック/ロック解除をマークできます。スレッドの同期は、最終的にはスタンドアロン オペレーティング システムのユーザー状態/カーネル状態における共有メモリのアクセス制御に基づいています。 分散サーバーは同じマシン上にはなく、複数のホストにまたがっているため、ロック タグはすべてのマシン プロセスが参照できる場所に保存する必要があります。 ロックは、在庫管理や宝くじなど、多くのビジネス シナリオの開発に使用されます。 たとえば、在庫が 1 つしか残っておらず、3 人のユーザーが同時に購入する予定の場合、最初に購入したユーザーの在庫はすぐにクリアされ、他の 2 人のユーザーは購入できなくなります。 分散ロックの理解この分散ロックを含め、私たちがよく話題にするスレッドセーフティとスレッド同期のソリューションはすべて、 「複数のスレッド/プロセスが同時に特定のリソースを更新しています。」 基本的な考慮事項1. 分散システムでは、ロックは一度に 1 つのサーバーによってのみ取得できます (これが分散ロックの基礎です) 2. デッドロックを防止するロック解除機構を装備(特定の事故を防止するため、ロックが解除されず、他の人がロックを取得できない) Redis SET リソース名 任意の文字列 NX EX 最大ロック時間 これは最もシンプルな分散ロック実装ソリューションです。 SET コマンドはいくつかのパラメータをサポートしています:
SET コマンド パラメータは SETNX、SETEX、および GETSET を置き換えることができるため、これらのコマンドは将来的に廃止される可能性があります。 上記のコマンドが OK を返す場合 (または再試行される場合)、クライアントはロックを取得します。 ロックを解除するには、DEL コマンドを使用します。タイムアウト期間に達すると、ロックは自動的に解除されます。 ロックを解除するときに、システムをより堅牢にするためにいくつかのデザインを追加します。 3. ロック タグ値として固定の文字列値を使用せず、業界ではトークンと呼ばれる、推測しにくいランダムな値を使用します。 4. ロックを解除するためにDELコマンドを使用せず、キーを削除するスクリプトを送信します。 ポイント 3 と 4 は、「ロックの期限が早く切れ、クライアント A が実行を完了していないため、クライアント B がロックを取得します。この時点で、クライアント A は実行を完了しています。ロックが削除されると、クライアント B のロックも削除されますか?」という問題を解決することを目的としています。 - 4 は 3 つのテクノロジの推奨実装です。 スクリプトは次のとおりです。
以下は、StackExchange.Redis を使用した上記の考慮事項に基づいたコード例です。
上記のコードでは、5 番目の考慮事項が追加されます。 5. 無制限のロック取得を避けるために、非ブロッキングロックが追加されます。poll_sはロックを待機し、待機されない場合はロックを取得しなくなります。 方向: 3 つのタスクを並行して開始し、同時に在庫を削減してみましょう。
3つの並列タスクが順番にロックを取得/解放しているのがわかります。 出力の概要この記事では、スレッド セーフティとスレッド同期の基礎から始め、分散ロックがホスト間のリソース スレッド/プロセス同期ソリューションであることを認識します。また、RedisSET コマンドを分散ロックとして使用する場合の設計上の考慮事項についても段階的に説明します。記憶力が良いことは文章力が悪いことほど良くありません。 |
<<: IDC:中国の産業用クラウド市場規模は2020年後半に23億ドルに達する見込み
>>: 分散トランザクション - 信頼性の高いメッセージ最終一貫性ソリューション
Namecheap は有名な海外ドメイン名商人です。上記のタイトルは単なるクリックベイトです。商人に...
ネットワーク技術に精通していない、または不慣れな企業にとって、強力な SEO 会社を選択することは非...
宝くじサイトに記事を投稿していたとき、このことを深く理解しました。多くのサイトでは宝くじをセンシティ...
過去 20 ~ 30 年にわたり、クラウド コンピューティングとサービスとしてのソフトウェア (Sa...
bgp.to は現在、日本の東京データセンターにソフトバンク回線独立型サーバーを展開しています。国内...
moonvm は、香港 HKT、香港 HGC、香港 WTT の 3 つのオペレータと連携して、香港ダ...
[[396651]]この記事はWeChat公式アカウント「妹の味」から転載したもので、著者は妹が飼っ...
実際、私は長い間SEOと連絡を取りました(登録時間2009-3-5)。オンラインで1か月もかかりませ...
量子コンピュータは、従来のコンピュータよりも少ないエネルギーで、より効率的な技術を開発する方法を提供...
北京ダリッジ・カレッジは、Amazon DeepRacer 自動運転レースカー、Amazon Ale...
ブランド創造のプロセスは、主に発見、認識、記憶、好意、忘れられない、共有の 6 つの段階に分けられま...
最近、ネットユーザーが投票した「中国の新・トップ10高リスク職業」ランキングで、タオバオのショップオ...
起業家および事業主の皆様へ:私はマーケティングの反逆者、Pu Jiang です。ウェブサイトの SE...
キーワードはウェブサイトのトラフィックの重要な要素であり、ウェブサイトの露出を拡大する決定的な要素で...
B2Bウェブサイトも、この百度革命の影響を深刻に受けました。症状は異なりますが、一般的にウェブサイト...