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

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

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つのオープンソース仮想化ツールで仮想マシンを管理する

推薦する

プロメテウスのプロ意識を称賛

prometeus 11/26 に 192M メモリの openvz を購入しましたが、数日前にキャ...

詳細記事 | UCloud データベース製品の進化

先日、「UCloud User Open Day」の最新イベントが無事に開催されました。 UClou...

hosteons: 10Gbps の帯域幅、無料の Windows ライセンス、カスタム アップロード ISO、年間 21 ドルの VPS、オプションの Los Angeles\Dallas\New York

Hosteonsは現在、ロサンゼルス、ダラス、ニューヨークのデータセンターでVPSの特別プロモーショ...

フォーラムの外部リンクを作成する際に注意すべき 4 つの詳細

Baidu のアルゴリズムはフォーラム外部リンクの重みを何度も減らしてきましたが、多くのウェブマスタ...

検索エンジンは権威に基づいて外部リンクの重要性を判断します。

ウェブマスターとして、またウェブサイトのキーワードで SEO プロモーションを実施してきたウェブマス...

ssdvirt - $5/年/64MB RAM/2GB SSD/100GB データトラフィック/G ポート/ダラス

私の記憶にある限り、ssdvirt は特別に低価格な VPS をリリースしたことはありません。今回発...

簡単な分析:ウェブサイトのトラフィックの減少に影響を与える18の理由!

月給5,000~50,000のこれらのプロジェクトはあなたの将来ですウェブサイトのトラフィックは常に...

テンプレートを使用して Web サイトを構築した後、最初に何をすべきでしょうか?

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています多くのユー...

百度インデックスは単なる広告モデル

Baidu Index に関しては、どのウェブマスターにとってももはや馴染みのない話ではないと思いま...

2019 年はなぜクラウド ネイティブにとって重要な年なのでしょうか?

「将来のソフトウェアはクラウド上で成長する必要がある」というのが、クラウド ネイティブ コンセプトの...

ウェブサイトの各ページの負荷バランスを最適化する方法

正があるところには負があり、陰があるところには陽があり、男があるところには女がある。この世のあらゆる...

360度動画から見る動画マーケティングの道

動画サイトの今後の発展展望は?360の総合検索エンジンと同時に立ち上げられた360 Videoはその...

分散システムの線形化可能性のテスト

最近、とてもよく書かれた記事を見ました。著者のアニッシュさんの同意を得て、中国語に翻訳することにしま...

3月の中国ドメイン名サービスプロバイダー上位25社:HiChina DNSpodの市場シェアは低下

IDC Review Network (idcps.com) は 4 月 4 日に次のように報告しま...