分散ロックは「スレッド同期」の延長です最近、「分散ロック」が初めて適用されました。考えてみてください。分散ロックは孤立したスキルポイントではなく、実際にはホスト間のスレッド同期です。
スタンドアロン サーバーは、特定のメモリ ヒープを共有することで、ロック/ロック解除をマークできます。スレッドの同期は、最終的にはスタンドアロン オペレーティング システムのユーザー状態/カーネル状態における共有メモリのアクセス制御に基づいています。 分散サーバーは同じマシン上にはなく、複数のホストにまたがっているため、ロック タグはすべてのマシン プロセスが参照できる場所に保存する必要があります。 ロックは、在庫管理や宝くじなど、多くのビジネス シナリオの開発に使用されます。 たとえば、在庫が 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億ドルに達する見込み
>>: 分散トランザクション - 信頼性の高いメッセージ最終一貫性ソリューション
今では、私の周りの誰もが自分のWeiboを持っています。 Weiboはあらゆる人々の空間に浸透しまし...
あけましておめでとう!ドメイン名を安く登録する方法に関する情報を集めて、皆さんにシェアしました。困っ...
現在、ほとんどの企業がビジネスにクラウド コンピューティングを導入しています。しかし、2018 年に...
大手クラウド コンピューティング ベンダーが提供するセキュリティ ツールは便利ですが、一部のユーザー...
最近、Huawei Security Emergency Response CenterとHuawe...
著名な企業ドメイン名の投機的かつ悪意のある登録は、指定された期間内に取り消されます。重慶市第五中級人...
実際的なニーズからなのか、サプライヤーの煽動からなのか、あるいは「ハイエンド」に見せるためなのかはと...
編集者注: 2013 年中国インターネット起業家会議 (http://2013.loohua.com...
最近、何人かの友人から、フォーラムの外部リンクの効果が以前ほど良くないのか、あるいはほとんどなくなっ...
これまで以上に多くの企業が、多くの場合クラウド サービス プロバイダーの支援を受けて、より容易なアク...
中国では、インターネットマーケティングサービスプロバイダーは検索エンジン最適化を非常に重視しています...
Weiboと同様に、WeChatもマーケティングとプロモーションにおいて非常に独特で重要な固有の利点...
私は毎日、数多くのウェブマスター フォーラムに常に参加し、あらゆる機会を活用し、外部リンクを投稿する...
百度は2009年4月に鳳凰巣システムを立ち上げて以来、このシステムは継続的に更新されており、ウェブマ...
8年間運営してきたVPSベンダーのHostusが最後にプロモーションを行ったのは今年5月でした。今日...