分散ロックは「スレッド同期」の延長です最近、「分散ロック」が初めて適用されました。考えてみてください。分散ロックは孤立したスキルポイントではなく、実際にはホスト間のスレッド同期です。
スタンドアロン サーバーは、特定のメモリ ヒープを共有することで、ロック/ロック解除をマークできます。スレッドの同期は、最終的にはスタンドアロン オペレーティング システムのユーザー状態/カーネル状態における共有メモリのアクセス制御に基づいています。 分散サーバーは同じマシン上にはなく、複数のホストにまたがっているため、ロック タグはすべてのマシン プロセスが参照できる場所に保存する必要があります。 ロックは、在庫管理や宝くじなど、多くのビジネス シナリオの開発に使用されます。 たとえば、在庫が 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億ドルに達する見込み
>>: 分散トランザクション - 信頼性の高いメッセージ最終一貫性ソリューション
Pacificrack (PR VPS) は、新しい PR-M シリーズ VPS「無制限トラフィック...
IDC Review Network (idcps.com) は 11 月 18 日に次のように報告...
2017年に設立されたロシアのVPS業者nuxt.cloudは、主にロシアのモスクワとドイツのデータ...
この記事の内容は次のとおりです。 概要:ポイントウォールとは何か? 流通チャネル 流通価格 効果評価...
1. マルチアカウントアーキテクチャ設計Alibaba Cloud リソースディレクトリ (RD) ...
[51CTO.com からのオリジナル記事] スマートホーム、コネクテッドカー、スマートヘルスケア....
「コンテンツは王様」は、SEO で最も頻繁に議論されるトピックの 1 つです。しかし、比較的優れたコ...
主に技術記事と製品という異なるタイプのサイトに分かれています。理由は、サイトの種類によって、直面する...
gcorelabsは9月21日、ブラジルのサンパウロデータセンターで、ブラジルVPS、ブラジルサーバ...
ご存知のとおり、企業ウェブサイトではコンバージョン率が鍵となります。トラフィックは非常に重要ですが、...
第 1 回 Red Hat IT プロフェッショナル総合スキル コンテストが開催されます。このコンテ...
2月19日、Sina Micro Charity Platform(gongyi.webo.com)...
[[424292]] IDC は、2025 年までに世界の「クラウド」支出総額が 1.3 兆ドルに達...
最近ウェブマスター界隈で話題になっていた百度シェアが、急に効力が弱くなった。このウェブサイトの背後に...
Hostyunは香港の荃湾データセンターに新しいAMD高性能シリーズを追加しました。このシリーズは「...