分散トランザクションの簡単な分析と簡単な実装

分散トランザクションの簡単な分析と簡単な実装

分散システムでは、データの高可用性を確保するために、通常、データの複数のコピー (レプリカ) を保持し、これらのコピーを異なる物理マシンに配置します。ユーザーに正しい CRUD やその他のセマンティクスを提供するには、異なる物理マシンに配置されたレプリカが一貫していることを確認する必要があります。分散トランザクションは、今日のユビキタスな分散展開システムではほぼ必須です。

[[320427]]

まずビジネスとは何かについてお話ししましょう。

分散トランザクション、トランザクション分離レベル、ACID については誰もがよくご存知だと思います。では、トランザクションとは何でしょうか?

コンセプト:

一般的に、やるべきこと、または行われたことを指します。

一連の操作が単一の論理作業単位として実行され、すべての操作が実行される場合とまったく実行されない場合があります。

簡単に言えば、トランザクションは同時実行制御の単位であり、ユーザーによって定義された一連の操作です。

特性:

トランザクションは、回復と同時実行制御の基本単位です。

トランザクションには、原子性、一貫性、独立性、永続性という 4 つの特性が必要です。これら 4 つの特性は、ACID 特性と呼ばれることがよくあります。

  • 原子性: トランザクションは分割できない作業単位です。トランザクションに含まれるすべての操作が実行される、または、いずれも実行されないかのいずれかになります。
  • 一貫性: トランザクションは、データベースをある一貫した状態から別の一貫した状態に変更する必要があります。一貫性と原子性は密接に関連しています。
  • 分離: トランザクションの実行は他のトランザクションによって妨害されることはありません。つまり、トランザクション内で使用される操作とデータは他の同時トランザクションから分離されており、同時に実行されるトランザクションは互いに干渉できません。
  • 耐久性: 耐久性は永続性とも呼ばれ、トランザクションがコミットされると、データベース内のデータに加えられた変更は永続的になることを意味します。その後の他の操作や障害は、これに何ら影響を与えないはずです。

では、分散トランザクションとは何でしょうか?

簡単な例を挙げてみましょう。考えてみてください。注文プロセスには 10 個を超えるリンクが関係し、注文して支払いは正常に完了しますが、クーポンの控除は失敗し、ポイントの増加も失敗します。前者の企業は騙され、後者のユーザーは不満を抱くことになるでしょう。

しかし、これらのサービスがさまざまな場所にある場合、どうすれば全員の成功を保証できるのでしょうか?分散トランザクション。

分散トランザクションは、複数のデータベースを操作するトランザクションです。実際、同じデータベース上のトランザクションの概念を複数のデータベース上のトランザクションに拡張します。目的は、分散システムにおけるデータの一貫性を確保することです。分散トランザクション処理の鍵となるのは、トランザクションによって実行されたすべてのアクションをどこでも知る方法が必要であり、トランザクションをコミットするかロールバックするかの決定によって、統一された結果 (すべてコミットされるか、すべてロールバックされるか) が生成されなければならないことです。

より有名な分散トランザクションは次のとおりです。

  • 2pc(2段階提出)
  • 3pc(3段階提出)
  • TCC (試行、確認、キャンセル)
  • セミメッセージング/結果整合性 (RocketMQ)

ここでは、最も単純な 2pc (2 段階) と、今後よく使用される可能性のある最終的な一貫性であるセミメッセージ トランザクションを紹介します。他の取引も同様であり、多くの利点があります。

もちろん、欠点もあります。

たとえば、データベース リソースを長時間ロックすると、システムの応答が遅くなり、同時実行性が実現できなくなります。

ネットワーク ジッターによりスプリット ブレインが発生し、トランザクションの参加者がコーディネーターの指示を適切に実行できなくなり、データの一貫性が失われます。

単一障害点: たとえば、ある瞬間にトランザクション コーディネーターがダウンした場合、選挙メカニズムを通じて新しいリーダーを生成できますが、そのプロセスで必然的に問題が発生します。 TCC は強力な技術チームによってのみサポートされ、コストが高すぎます。

まずはこの2つを紹介しましょう。

2pc(2段階提出):

フェーズ 1: 準備フェーズ (投票フェーズ)、フェーズ 2: 提出フェーズ (実行フェーズ)

2pc (2 フェーズ コミット) は、分散トランザクションの最も初期の形式と言えます。これは、メッセージ ミドルウェアまたはすべてのトランザクション管理を通じて複数のシステムを調整する、仲人のようなものになります。 2 つのシステムがトランザクションを操作する場合、両方ともリソースをロックしますが、トランザクションはコミットしません。両方の準備ができたら、メッセージ ミドルウェアまたはすべてのトランザクション マネージャーに通知し、トランザクションを個別にコミットします。最終結果にかかわらず、第2フェーズでは現在の取引が終了します。

しかし問題は、システム A のトランザクションが正常に送信されたが、ネットワークの変動やさまざまな理由によりシステム B の送信に失敗した場合、やはり失敗するということです。

最終的な一貫性:

プロセス全体を通じて、次のことが保証されます。

  • ビジネス アクティブ パーティのローカル トランザクション送信が失敗した場合、ビジネス パッシブ パーティはメッセージの配信を受信しません。
  • ビジネス アクティブ パーティのローカル トランザクションが正常に実行される限り、メッセージ サービスは確実にメッセージを下流のビジネス パッシブ パーティに配信し、最終的にビジネス パッシブ パーティがメッセージを正常に消費できることを保証します (消費の成功または失敗、つまり、最後には最終状態が必ず存在します)。
  • しかし、テクノロジーとはこういうものです。あらゆる極端な状況を考慮する必要があり、完璧な解決策を見つけることは困難です。そのため、3 段階、TCC、ベスト エフォート通知など、分散トランザクション ソリューションが数多く存在します。必要なのは、なぜそれを実行する必要があるのか​​、それを実行することの利点と欠点は何かを理解し、実際の開発中にそれに注意を払うことです。システムはビジネスシナリオに応じて設計されます。ビジネスのないテクノロジーは意味がなく、テクノロジーのないビジネスには信頼がありません。

[この記事は51CTOコラム「AiChinaTech」、WeChatパブリックアカウント(id:tech-AI)からのオリジナル記事です]

この著者の他の記事を読むにはここをクリックしてください

<<:  コンテナ オーケストレーション ツールを選択するにはどうすればよいでしょうか?

>>:  Kafka はなぜこんなに速いのでしょうか?

推薦する

ソフトテキストトラフィックの導入: オンサイトトラフィックとオフサイトトラフィックの両方を調整する必要がある

現在、トラフィックはウェブサイトの品質を測る重要な指標となっており、ユーザーからも高く評価されていま...

外国貿易ウェブサイトが Google ペンギン アップデートによってペナルティを受けたかどうかを判断する方法

今は最高の時であり、最悪の時でもあります。数え切れないほどの人々が Google ペンギン アップデ...

ロボットによるブロックに関する百度と淘宝網間の問題の図解

2008年にタオバオがロボットプロトコルを使って百度のスパイダーをブロックしたという騒動は、その事件...

extravm ロサンゼルス データセンターの簡単なレビュー - 100G の高防御 + 10Gbps の帯域幅 + Ryzen 3900X + NVMe VPS

Extravm の以前の VPS は、OVH データ センターか米国中部のダラスにあり、特別な注目を...

SEO実践:1ヶ月でキーワードランキング4位

多くの SEO 担当者は、Baidu で上位にランクインすることがますます難しくなってきており、かろ...

外部リンク作成の経験5年。ウェブサイトを公開するには?外部リンクを作成するには?

私は最適化業界で 5 年間働いてきましたが、それは非常に困難な道のりでした。 5年前の今頃、SEO ...

A8 Musicはインターネット出版ライセンスを取得しており、インターネットオーディオおよびビデオ出版に従事することができます。

新浪科技報4月10日午後、A8ミュージックは本日、国家新聞出版広電総局(旧国家新聞出版総局)が発行す...

SaaS 時代のデータ セキュリティの再考

今日、SaaS 駆動型のフロントエンド システムと IaaS/PaaS がデータ センター テクノロ...

製品ページに複数のパンくずナビゲーションを設定できますか?

パンくずナビゲーションは非常に一般的で便利なナビゲーション システムです。特に、幅広い製品を取り扱う...

ブランドダブルイレブンマーケティング戦略!おすすめコレクション

あるタイプの電子商取引会社は「祭りを作る」のが得意です。年中行事の「618」と年末の「双十一」は、彼...

共同購入サイトの3大キャッチフレーズ「資金調達、収益性、残りN店舗」の解釈

共同購入ウェブサイトが登場してから2年が経ち、人々は共通の「キャッチフレーズ」に慣れ始めている。 「...

詳細なビジネス シナリオ、クラウド エクスペリエンスの議論のために、Volcano Engine は 11 月 10 日に北京でお会いすることをご招待します。

クラウド コンピューティングは、企業のデジタル化とインテリジェンスをサポートするために不可欠なインフ...

クラウドコンピューティングエコシステムの新たな利点に関するシンポジウムが成功裏に開催されました

10月14日、中国科学技術協会社会サービスセンターの支援を受けて、「クラウドコンピューティングエコシ...

WebFaction - 無料 $50

WebFaction は現在、ホスティング製品に使用できる 50 ドルのクレジットをお客様のアカウン...

2013 年にウェブサイトのランキングを急速に上げるための情報公開に関する 5 つのヒント

情報公開は、SEO初心者にとってもベテランSEO専門家にとっても、日常的な話題です。しかし、現在オン...