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

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

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

推薦する

簡単な説明: ウェブサイトのコンテンツを更新するときに注意すべき 2 つの量は何ですか?

高品質のコンテンツから高品質の Web サイトが生まれ、Web サイトのコンテンツの重要性は明らかで...

子羊を犠牲にせずに狼を捕まえることはできません。外部リンクのプロモーションは、学習重視のマーケティングに変えるべきです。

検索エンジンによるスパムの取り締まりにより、外部リンクの掲載やマーケティングプロモーションの実施がま...

[更新] 定番の「無料クラウドホスト」をいくつか紹介します

最近人気のホストはクラウドホスト(クラウドサーバー)です。無料のクラウドホストには一定の市場(学生や...

ウェブページを元のウィンドウで開くと閲覧しやすくなりますか、それとも新しいウィンドウで開くと閲覧しやすくなりますか?

ウェブページを新しいウィンドウで開くのが良いのか、それとも現在のページで開くのが良いのか。これはおそ...

熊章浩の多数の遺跡の本来の保護権が格下げされた

月給5,000~50,000のこれらのプロジェクトはあなたの将来です最近、多くのウェブサイトが百度検...

ウェブサイトデータ分析の問題点3: データウェアハウス関連の問題

前回の記事「Web サイト データ分析におけるいくつかの問題 2」では、主に BI 関連の問題を整理...

クラウドコンピューティングを効率的に導入する方法

過去数年間に私たちが目にしてきた革新的なビジネスとテクノロジーの破壊的変化のほとんどは、クラウド コ...

hostyun: Tri-Network VIP Line VPS、10Gbps 帯域幅、月額 18 元から、Ryzen9 3950X+NVMe

Hostyun には、米国ロサンゼルスの cera データセンターに接続された 3 つのネットワーク...

ウェブマスターによるブログに関する考えや議論 ブログは孤立した島になるのでしょうか?

この記事は私のブログのSEO日記第23弾です。最近はお店の経営が忙しくて本当に疲れていますが、面白い...

Baiduはスキルが強力なツールになることを知っている

ウェブマスターは、Baidu が自社製品、特に Baidu Knows を重視し好んでいることをご存...

主流のオンラインマーケティングプロモーションチャネル17の機能をまとめました。

主流のオンラインマーケティングプロモーションチャネルを17個整理しました。オンラインプロモーションチ...

李佳琦とヴィヤは一晩で180億元相当の商品を販売。ライブストリーミングはダブル11を殺したのか?

早くも9月2日、アリババと天猫の副社長である楊光(垂雪)氏は、今年の双十一は昨年と同様に「ヌンチャク...

否定的な情報は「2つのノーと3つの治療」の原則に従うべきである

否定的な情報は「2つのノーと3つの治療」の原則に従うべきであるネガティブな情報は企業やウェブサイトに...

ウェブサイトのコンバージョン率を向上させるには、まず何から始めるべきか - A5 Webmaster Network

トラフィックの守護者になるか、それともコンバージョン率の改革者になるか? トラフィックは、Web サ...

#プロモーション: urpad-$3/4IP/1G メモリ/100G ハードディスク/1T トラフィック/ロサンゼルス

Urpad が最後に私のブログに登場したのは、2018 年 3 月 8 日です。Root Level...