序文最近、分散トランザクションに関するブログ投稿をいくつか読んで、メモを取りました。ハハハ〜 データベーストランザクションデータベース トランザクション (略称: トランザクション) は、データベース管理システムの実行プロセスにおける論理単位です。これは、データベース操作の有限のシーケンスで構成されます。これらの操作はすべて実行されるか、まったく実行されません。それは分割できない作業単位です。 データベース トランザクションの一般的な特性には、原子性、一貫性、独立性、永続性 (ACID と呼ばれます) などがあります。
取引の実施原則地方問題単一のサーバーおよび単一のリレーショナル データベース上の従来のトランザクションは、ローカル トランザクションです。ローカル トランザクションはリソース マネージャーによって管理されます。 JDBC トランザクションは典型的なローカル トランザクションです。 トランザクションログInnoDB トランザクション ログには、REDO ログと UNDO ログが含まれます。 再実行ログ通常、REDO ログは、特定の行がどのように変更されたかではなく、データ ページに対する物理的な変更を記録する物理ログです。送信後に物理データ ページを復元するために使用されます。 元に戻すログUNDO ログは論理ログであり、物理ログを記録する REDO ログとは異なります。レコードが削除されると、対応する挿入レコードが UNDO ログに記録され、レコードが更新されると、対応する逆の更新レコードが記録されると考えられます。 トランザクションACID特性の実装アイデア
分散トランザクション分散トランザクション:トランザクション参加者、トランザクション サポート サーバー、リソース サーバー、およびトランザクション マネージャーが、異なる分散システムの異なるノードに配置されていることを意味します。簡単に言えば、分散トランザクションとは分散システムにおけるトランザクションを指し、異なるデータベース ノード間のデータの一貫性を確保するために存在します。 分散トランザクションがなぜ必要なのでしょうか?以下は 2 つの側面から説明されます。 マイクロサービスアーキテクチャにおける分散トランザクションインターネットの急速な発展に伴い、軽量かつ明確な機能区分を持つマイクロサービスが歴史の舞台に登場しました。たとえば、ユーザーがライブ放送ギフトを購入するために注文を行うサービスは、コインサービス (coinService)、注文サービス (orderService)、ギフトサービス (giftService) の 3 つのサービスに分割されます。これらのサービスは異なるマシン (ノード) に展開されており、対応するデータベース (ゴールド コイン データベース、注文データベース、ギフト データベース) も異なるノードにあります。 ユーザーがギフトを購入する注文をすると、ギフト データベース、ゴールド コイン データベース、注文データベースは異なるノード上にあります。ローカルトランザクションは使用できません。では、異なるデータベース (ノード) 上のデータの一貫性を確保するにはどうすればよいでしょうか?これには分散トランザクションが必要です〜 シャーディングによる分散トランザクションビジネスの発展に伴い、データベース内のデータはますます大きくなっています。データが数千万を超えると、それを異なるデータベースとテーブルに分割する必要があります(以前は、会社でデータベースとテーブルを分割するために mycat を使用していましたが、後に sharding-jdbc を使用しました)。分割データベースでは、データが異なるノードに分散されます。たとえば、一部は深センのコンピューター ルームにあり、一部は北京のコンピューター ルームにあります。それを保証するためにローカルトランザクションを使用したい場合、それは役に立たないでしょう。分散トランザクションは依然として必要です。 たとえば、A が B に 10 元を送金する場合、A のアカウントデータは北京のデータセンターにあり、B のアカウントデータは深センのデータセンターにあります。プロセスは次のとおりです。 CAP理論とBASE理論分散トランザクションを学ぶには、CAP 理論と BASE 理論を理解する必要があります。 CAP理論分散システムの基本理論である CAP 理論は、分散システムでは、一貫性、可用性、分断耐性の 3 つの要素のうち、最大で 2 つを同時に達成できることを意味します。 一貫性(C): 一貫性とは、データが複数のコピーにわたって一貫性を維持できるかどうかを指します。たとえば、あるパーティション ノードでデータが更新されると、他のパーティション ノードで読み取られるデータも更新されたデータになります。 可用性 可用性とは、システムによって提供されるサービスが常に利用可能であり、ユーザーからの各操作要求が常に限られた時間内に結果を返すことができることを意味します。ここでのポイントは「限られた時間内で」と「結果を返す」ことです。 パーティション許容度(P): 分散システムでネットワークパーティション障害が発生した場合でも、一貫性と可用性を満たすサービスを外部に提供できる必要があります。 選択の説明 CA は、パーティション耐性を放棄し、一貫性と可用性を強化します。これは、実際には従来のスタンドアロン データベースの選択です。 AP は、一貫性、パーティション耐性、および可用性を放棄します。これは、多くの分散システム設計の選択です。 CP は可用性を放棄し、一貫性とパーティション耐性を追求します。ネットワークの問題により、システム全体が直接利用できなくなります ベース理論BASE 理論は CAP における AP の拡張です。当社のビジネス システムでは、システムの可用性とパーティション耐性と引き換えに一貫性を犠牲にすることを検討しています。 BASE は、Basically Available (基本的に利用可能)、Soft state (ソフト状態)、Eventually Consistent (最終的に一貫性がある) という 3 つのフレーズの略語です。 基本的に利用可能 基本的な可用性: システム全体の障害ではなく、ローカル障害をサポートすることで実現されます。ユーザーが 5 つのデータベース サーバーに分割されている場合、1 つのユーザー データベースで障害が発生すると、その特定のホスト上のユーザーの 20% にのみ影響し、他のユーザーには影響はありません。 ソフトステート ソフト状態、一定期間同期が取れない状態になる可能性がある 最終的に一貫性 最終的な一貫性とは、常に強い一貫性を維持するのではなく、データが最終的に一貫性を持つことを意味します。 分散トランザクションのためのいくつかのソリューション分散トランザクションソリューションには主に次のものがあります。
フェーズ2提出計画2 フェーズ コミット スキームは、一般的に使用される分散トランザクション ソリューションです。トランザクションの送信は、実行計画の準備と送信の 2 つの段階に分かれています。 第2段階の提出成功準備フェーズでは、トランザクション マネージャーは各リソース マネージャーに準備メッセージを送信し、リソース マネージャーのローカル トランザクション操作が正常に実行された場合は成功を返します。 コミット実行フェーズでは、トランザクション マネージャーがすべてのリソース マネージャーから成功メッセージを受信すると、各リソース マネージャーにコミット メッセージを送信し、RM は TM の指示に従ってコミットを実行します。図に示すように: フェーズ2の提出失敗準備フェーズでは、トランザクション マネージャーは各リソース マネージャーに準備メッセージを送信します。リソース マネージャーのローカル トランザクション操作が正常に実行された場合は、成功が返されます。実行が失敗した場合は、失敗が返されます。 コミット実行フェーズ中に、トランザクション マネージャーがいずれかのリソース マネージャーが失敗したというメッセージを受信すると、各リソース マネージャーにロールバック メッセージを送信します。リソース マネージャーは、トランザクション マネージャーの指示に従ってローカル トランザクション操作をロールバックし、トランザクション処理プロセスで使用されるすべてのロック リソースを解放します。 2フェーズコミットの利点と欠点2PC ソリューションは実装が簡単でコストも低いですが、次のような主な欠点があります。
TCC(補償メカニズム)TCC は補償メカニズムを採用しており、その中核となる考え方は、各操作ごとに、対応する確認と補償 (キャンセル) 操作を登録する必要があるというものです。 TCC (試行-確認-キャンセル) モデルTCC (Try-Confirm-Cancel) は、ビジネス ロジックを分解して分散トランザクションを実装します。特定のビジネス サービスの場合、TCC 分散トランザクション モデルでは、ビジネス システムが次の 3 つのロジックを実装する必要があります。 試行フェーズ: 実行を試行し、すべてのビジネスで一貫性チェックを完了し、必要なビジネス リソースを予約します。 確認フェーズ: このフェーズでは、試行フェーズですでにチェックされているため、ビジネスはチェックなしで確認され、送信され、デフォルトでは確認フェーズでエラーは発生しません。 キャンセルフェーズ: ビジネス実行が失敗した場合、このフェーズに入ります。試行フェーズで占有されていたすべてのビジネス リソースを解放し、確認フェーズで実行されたすべての操作をロールバックします。 TCC 分散トランザクション モデルは、マスター ビジネス サービス、スレーブ ビジネス サービス、ビジネス アクティビティ マネージャーの 3 つの部分で構成されます。
TCC が分散トランザクションを実装するプロセスをシミュレートするために、ユーザーがギフトを購入する注文を出す例を見てみましょう。
TCC のトライフェーズ:
TCC 確認フェーズ:
TCC のキャンセル フェーズ:
TCC の利点と欠点TCC ソリューションを使用すると、アプリケーションはデータベース操作の粒度をカスタマイズし、ロックの競合を減らし、パフォーマンスを向上させることができますが、次のような欠点もあります。
ローカルメッセージテーブルeBay は当初、分散トランザクションの問題を解決するためにローカル メッセージ テーブル ソリューションを提案しました。このソリューションは現在業界で広く使用されています。その中心的なアイデアは、分散トランザクションをローカル トランザクションに分割して処理することです。基本的な実装フローチャートを見てみましょう。 基本的な実装のアイデアメッセージ送信者:
メッセージコンシューマー:
プロデューサーとコンシューマーは、ローカル メッセージ テーブルを定期的にスキャンし、処理されなかったメッセージや失敗したメッセージを再送信します。信頼性の高い自動調整およびアカウント補充ロジックがあれば、このソリューションは依然として非常に実用的です。 長所と短所:このソリューションの利点は、分散トランザクションの問題を適切に解決し、最終的な一貫性を実現することです。欠点は、メッセージ テーブルがビジネス システムに結合されることです。 ベストエフォート通知最大通知とは何ですか?ベストエフォート通知も分散トランザクション ソリューションです。以下は、法人向けオンラインバンキング振込の例です。
ベストエフォート通知スキームの目的は、通知の発信者が特定のメカニズムを使用して、ビジネス処理の結果を受信者に通知するために最善の努力をすることです。ベストエフォート通知実装メカニズムは次のとおりです。 ベストエフォート通知ソリューションベスト エフォート通知を実装するには、MQ ack メカニズムを使用できます。 プラン
移転業務実施フローチャート: 対話プロセスは次のとおりです。
サガトランザクションSaga トランザクションは、プリンストン大学の Hector Garcia-Molina 氏と Kenneth Salem 氏によって提案されました。基本的な考え方は、長いトランザクションを複数のローカルの短いトランザクションに分割し、それらを Saga トランザクション コーディネータが調整することです。正常に終了した場合は正常に完了します。ステップが失敗した場合、補正操作は逆の順序で 1 つずつ呼び出されます。 佐賀の紹介
サガの処刑命令
佐賀の2つの回復戦略
例えば、ユーザーが注文して10元を支払って10本以上のバラを購入した場合、 T1 = 注文する、T2 = ユーザーから 10 元を差し引く、T3 = ユーザーが 10 本のバラを追加する、T4 = 在庫が 10 本のバラだけ減少する C1 = 注文をキャンセル、C2 = ユーザーに 10 元を追加、C3 = ユーザーは 10 本のバラを失う、C4 = 在庫に 10 本のバラを追加 トランザクションが T4 で異常ロールバックされたと仮定します。 C4 がバラを在庫に戻そうとすると、ユーザーのバラがすべて使い果たされていることがわかります。これはSaga の欠点であり、トランザクション間の分離が欠如していることが原因です。 |
<<: Kunpeng エラスティック クラウド サーバーの Node.js デプロイメントと高可用性を迅速に実装するにはどうすればよいでしょうか?
>>: Kafka を使用したデジタル ツイン IoT アーキテクチャの実装
数日前、私はDockerfile[1]のHere-Doc構文をテストしましたが、役に立たないことがわ...
Raksmart Japanクラウドサーバーが日本・東京で正式に販売開始。米国シリコンバレー、ロサン...
Baidu が Aibang.com を買収すると聞いてショックを受けました。驚き、残念に思いました...
みなさんこんにちは。私はSEOプロモーション業界に参入したばかりの新人です。毎日少し戸惑っていますが...
zgovpsはどうですか? zgovps ロサンゼルス vps はどうですか? zgovpsは昨日、...
今日のデジタル世界では、ビジネスを遂行するためにソフトウェアを使用する企業がますます増えています。マ...
ハイブリッドクラウドストレージソリューションのトレンドパブリッククラウドストレージ容量無制限。パブリ...
Hostigation は、中程度の価格で安定した VPS プロバイダーです。HostCat では、...
多くのウェブサイトビルダーは、SEO という略語に精通しています。なぜなら、ウェブサイトビルダーはこ...
PrometeusのシカゴデータセンターVPSはSSDハードドライブを使用しており、openvzとX...
みなさんこんにちは。最近何かが起こり、忙しくてオンラインになっていなかったので、記事をシェアしていま...
SharkTech は現在、ロサンゼルスのデータセンターで特別な低価格サーバーを宣伝しています。この...
現在、多くの調査レポートでは、CIO とチャンスが結び付けられています。デジタル変革の波と革新的なテ...
キーワードは SEO において、特にキーワードランキングの向上において重要です。合理的なレイアウトと...
[51CTO.comからのオリジナル記事]第14次5カ年計画では、デジタル経済の内容が独立した章とし...