分散ロック、もう少し深く! !

分散ロック、もう少し深く! !

1. 原因

分散環境では、複数のマシン上の複数のプロセスが 1 つのデータに対して操作を行うため、必然的に「商品の売れ過ぎ」などのデータの不整合が発生します。したがって、分散環境で重要なリソースにどのようにアクセスするかは、インターネットにとって大きな問題です。分散ロックが解決策です。

2. 相互排除の原則

原則: 複数のアクセス パーティが同じリソースを操作する場合、相互排他性が必要です。これは通常、これらのアクセス パーティが同時にアクセスできるロックを使用することで実現されます。

シーン1

同じプロセス内で、複数のスレッドをシリアル アクセス用にロックすることで、それらのスレッドを相互に排他的にすることができます。

ステップ:

  • 複数のスレッドが同時にロックを取得する
  • ブロックを取得するのは 1 つのスレッドのみで、ブロックを取得できない他のスレッドはブロックされるか、次回再試行されます。
  • ロックを取得したスレッドは重要なリソースを操作する
  • 重要なリソースを操作した後はロックを解除する

ナレーション: ロックはプロセス内のデータ構造であり、重要なリソースをめぐる競合をロック構造をめぐる競合に変換します。

シーン2

分散環境では、プロセス内のロック構造をプロセス外で使用することはできません。では、マルチプロセス環境で重要なリソースをどのように保護すればよいのでしょうか。

インプロセス ロック メカニズムと組み合わせると、いくつかの条件を導き出すことができます。

  • すべてのプロセスがアクセスできる特別なデータ構造が必要である
  • 同時にアクセスできるのは1つのプロセスのみ
  • リソースに正常にアクセスするプロセスは、重要なリソースにアクセスできます。

ナレーション: この問題の鍵となるのは、一度に 1 つのプロセスのみが正常にアクセスできる外部ストレージ構造を見つけることです。

3. 分散ロック

分散ロックの核心は適切な外部ストレージを選択することであるため、「適切な」ストレージ メディアとストレージ モデルを選択する方法が私たちの考え方の核心です。

では、分散ロックではリレーショナル ストレージと KV ストレージのどちらを使用すればよいのでしょうか?

ロックの観点からは、それほど多くのことは必要とせず、KV ストレージで十分です。そこで私たちが最初に考えたのは、Redis ソリューションです。 Redis ソリューションは最適なソリューションでしょうか?

Redis: シングルスレッドの高性能インメモリ KV ストレージ ソリューション。

  • すべてのプロセスからアクセスできるデータ構造
  • シングルスレッドは、1つのプロセスのみが正常にアクセスできることを満たします(setnxコマンド)
  • ビジネスにおける重要なリソースに対して、成功セットのプロセスが確実に実行されるようにする

ステップ:

  • 複数のマシン上の複数のプロセスがこのロックを競い合います。たとえば、キャッシュ上でset key=123操作を同時に実行します。
  • ロックを取得できるのは 1 つのプロセスのみ、つまり、キャッシュに key=123 を正常に設定できるのは 1 つのプロセスのみであり、失敗したプロセスは次回再試行します。
  • ロックを取得したプロセスは重要なリソースに対して操作を行う
  • 減算が完了すると、ロックが解除され、つまりキー=123でキャッシュが削除されます。

機能的には、Redis は分散ロックを完璧に実装しています。詳しく見てみましょう。

  • MySQL は分散ロックを実装できますか?
  • ZooKeeper の分散ロックの実装と Redis の実装の本質的な違いは何ですか?
  • さまざまなアーキテクチャオプションの中からどのように選択すればよいでしょうか?

<<:  Kubernetes マイクロサービス自動リリース システム

>>:  5つのオープンソース仮想化ツールで仮想マシンを管理する

推薦する

クラウド コンピューティングの課題: オンプレミス クラウド コンピューティングにおける選択肢の枯渇と不適切な戦略

ほとんどの企業は、新たな機会を活用したいためにクラウドに移行していますが、オンプレミスでのみ機能する...

iovz: 韓国CN2+SK\香港3ネットワーク直結\ロサンゼルスAS4837、クラウドサーバー/独立サーバー、月払い20%割引\年払い30%割引

iovz は現在、韓国、香港、ロサンゼルスのデータセンターのクラウド サーバーと独立サーバーに特別割...

クラウドのために生まれた「クラウド ネイティブ」が、なぜますます重要になっているのでしょうか?

[[343634]] IT の歴史には古典的な物語があります。 1943 年、IBM の会長であるト...

#黒5# dreamhost: 60ドルの直接割引、無制限のウェブサイトホスティング、多数のIP

世界的に有名なホスティング ブランドの Dreamhost も、本日ブラック ウィークとサイバー マ...

fdcservers-$0.99/Xen/128MB RAM/2か月間無料

fdcservers.net のクリスマス プロモーションが早くも始まりました。最初の 1 か月分を...

シャーク データ センター: 純粋なロサンゼルス データ センター、CN2 ネットワーク、独占帯域幅、特別価格のサーバー プロモーション

Sharktechは先週、正式にCN2ネットワークに接続しましたが、価格が高いため、混合回線でのみ使...

電子商取引事業を始めて10年近く経ちますが、まだ利益が出ていないというのは本当でしょうか?

8月中旬、電子商取引で儲けることの是非をめぐる議論が、一般的なB2C/C2B/C2Cの概念を覆すもの...

UCloud AIオンラインサービスが低遅延シナリオに重点を置くGPUバージョンをリリース

序文UCloud AIオンラインサービス「UAI-Inference」は、昨年5月の無料公開ベータ版...

iwstack - 無料 15 ユーロ / Openstack クラウド / どの Windows システムでも使用可能

ホスト キャット グループ管理者の「morgan」がグループ内で、iwstack の再チャージで 1...

個人ウェブサイトが生き残りたいなら、次の5つの点に注意する必要があります

大手検索エンジンがインターネットのスパムサイトを一掃するにつれ、特に一部の個人サイトにとって、ランキ...

さようなら、カフカ!さようなら、RocketMQ!

Pulsar は、2016 年に Yahoo によってオープンソース化され、2018 年にトップレベ...

あなたの独立系外国貿易モールがうまくいっていないのはなぜですか?

対外貿易B2Cモールには、プラットフォーム型モールと自社構築型モールの2種類があります。プラットフォ...

巨木観察03: 熱帯雨林の風システム: ゼロから数億まで、実はあなたもできる

観測対象の概要みなさんこんにちは。私は曹源兄弟です。今日はCool Grassrootsが第03回大...

SEO アカデミー: Google 補足資料の新しい検索方法

SEO アカデミーが以前公開していた Google 補足資料が消えてしまったのでしょうか? 記事を読...