検索
ホームページシステムチュートリアルLinux信頼性の高いメッセージング サービスの実装を検討する

###導入### 分散トランザクションは、多くの場合、サービス指向の問題点です。多くのシナリオでは、ビジネスを通じて分散トランザクションを回避していますが、分散トランザクションに依存する必要があるシナリオもまだいくつかあります。分散トランザクションの処理方法について話しましょう1 一般的なソリューション
分散トランザクションの問題を解決するには多くの方法があり、インターネット上にはさまざまな解決策を提供するブログが多数あります。まとめると、大きく次の 2 つの方法に分けられます。 1. 2 フェーズ コミット (略して 2PC): これは一般的な分散トランザクション ソリューションです。この方法では、コーディネーター ノードは参加者ノードの操作を調整し、コミットまたはロールバック時にすべてのノードが合意に達することを保証します。 厳格な分散トランザクションと 2 フェーズ コミットは、強整合性を実現するメカニズムです。 厳格な分散トランザクションとは、分散システム内の複数の参加ノードによって実行される一連の操作を指し、アトミック性、つまりすべてが成功するかすべてが失敗するかを保証する必要があります。このメカニズムでは、すべての参加ノードがトランザクション実行中に同じプロトコルに従い、コーディネーター ノードのガイダンスを通じてトランザクション

を実装する必要があります。

柔軟な分散トランザクションは、分散システムでトランザクションを処理する方法です。ベストエフォート型のコミット戦略が採用されています。つまり、トランザクションの送信を完了するために最善を尽くしますが、一部の操作の失敗も許容されます。柔軟な分散トランザクションでは、通常、トランザクション管理の実装に TCC (試行-確認-キャンセル) モードが使用されます。 TCC モデルは、トランザクションを試行、確認、キャンセルの 3 つのフェーズに分解します。

まず、分散トランザクションの前提条件の保証を解決します。メッセージの繰り返しの送信がビジネスに影響を与えるのを防ぐために、インターフェースは冪等である必要があります。

2 信頼性の高いメッセージ システムの設計 (これは良い感じで比較的シンプルなので共有します)

上に示したとおり

実行の開始例: 信頼性の高いメッセージング サービスの実装を検討する ###試す{### if(prepare()) { //送信前フェーズ

doService(); //ビジネスロジックを実行

updateMsgStatus();//ステータスを確認するためにメッセージを更新

}

}

1 メッセージの事前送信、試行フェーズ。メッセージの事前送信が失敗した場合、ビジネスはまだ実行されていないため、システム A と B は依然として一貫性があり、処理は必要ありません。
これはわかりやすいですね

2 現在送信されたメッセージは成功し、ビジネス ロジックの実行が開始されます。実行が成功すると、更新された送信前メッセージのステータスが送信確認に変更されます。このときビジネスロジックの実行に失敗すると、送信済みのメッセージは新たなステータスに更新されず、この時点でメッセージ確認システムが動作し、業務システム1に戻ってメッセージのステータスを確認することになります。業務実行が失敗したことが判明した場合は、送信前ステータスを失敗ステータスに更新します。
###3 この時点でビジネスの実行が成功し、送信を確認するためにメッセージが更新されていれば、問題はありません。メッセージの更新が失敗した場合でも、メッセージ確認システムはステータスをチェックし、メッセージが削除されたか送信が確認されたかを更新します。

4 メッセージ送信者は

を消費し始めます

1> たとえば、消費が失敗して不整合が発生した場合、メッセージ回復システムはメッセージのステータスを検出し、メッセージを再送信します。

2>ビジネスの実行が失敗した場合、メッセージは確認されません。メッセージ回復システムは引き続きメッセージのステータスを検出し、メッセージを再送信します

3>アスクが失敗した場合は、上記のロジックで再送しますが、もちろん再送回数には制限があり、毎回送信できるわけではありません。最大回数を超えた場合は再送を行ってください。 、デッドレターキューに入り、手動介入を待ちます。

4> 質問が成功すると、メッセージは正常に消費されます。これは完璧であり、信頼性の高いメッセージ サービスの問題を解決します。

3 頑張って提出してください

これは比較的単純です。リアルタイム パフォーマンスが低い一部のシナリオでは、失敗したメッセージを繰り返し送信して、メッセージのプッシュが確実に成功するようにします。

たとえば、トランザクションが完了すると、サードパーティのメッセージがプッシュされます。現時点では、努力の提出

を使用できます。

この記事はオープンソースチャイナコミュニティ[http://www.oschina.net]からの転載です。

以上が信頼性の高いメッセージング サービスの実装を検討するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はLinux就该这么学で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Linux管理者の給与はいくらですか?Linux管理者の給与はいくらですか?Apr 17, 2025 am 12:24 AM

Linux管理者の平均年salは、米国で75,000〜95,000ドル、ヨーロッパでは40,000〜60,000ユーロです。給与を増やすには、次のことができます。1。クラウドコンピューティングやコンテナテクノロジーなどの新しいテクノロジーを継続的に学習します。 2。プロジェクトの経験を蓄積し、ポートフォリオを確立します。 3.プロフェッショナルネットワークを確立し、ネットワークを拡大します。

Linuxの主な目的は何ですか?Linuxの主な目的は何ですか?Apr 16, 2025 am 12:19 AM

Linuxの主な用途には、1。Serverオペレーティングシステム、2。EmbeddedSystem、3。Desktopオペレーティングシステム、4。開発およびテスト環境。 Linuxはこれらの分野で優れており、安定性、セキュリティ、効率的な開発ツールを提供します。

インターネットはLinuxで実行されますか?インターネットはLinuxで実行されますか?Apr 14, 2025 am 12:03 AM

インターネットは単一のオペレーティングシステムに依存していませんが、Linuxはその上で重要な役割を果たしています。 Linuxは、サーバーやネットワークデバイスで広く使用されており、安定性、セキュリティ、スケーラビリティに人気があります。

Linux操作とは何ですか?Linux操作とは何ですか?Apr 13, 2025 am 12:20 AM

Linuxオペレーティングシステムのコアは、コマンドラインインターフェイスで、コマンドラインを介してさまざまな操作を実行できます。 1.ファイルおよびディレクトリ操作は、ファイルとディレクトリを管理するために、LS、CD、MKDIR、RM、その他のコマンドを使用します。 2。ユーザーおよび許可管理は、useradd、passwd、chmod、その他のコマンドを介してシステムのセキュリティとリソースの割り当てを保証します。 3。プロセス管理は、PS、Kill、およびその他のコマンドを使用して、システムプロセスを監視および制御します。 4。ネットワーク操作には、Ping、Ifconfig、SSH、およびネットワーク接続を構成および管理するためのその他のコマンドが含まれます。 5.システムの監視とメンテナンスは、TOP、DF、DUなどのコマンドを使用して、システムの動作ステータスとリソースの使用を理解します。

Linuxエイリアスを使用したカスタムコマンドショートカットで生産性を高めますLinuxエイリアスを使用したカスタムコマンドショートカットで生産性を高めますApr 12, 2025 am 11:43 AM

導入 Linuxは、柔軟性と効率性により、開発者、システム管理者、およびパワーユーザーが好む強力なオペレーティングシステムです。しかし、頻繁に長く複雑なコマンドを使用することは退屈でERです

Linuxは実際に何に適していますか?Linuxは実際に何に適していますか?Apr 12, 2025 am 12:20 AM

Linuxは、サーバー、開発環境、埋め込みシステムに適しています。 1.サーバーオペレーティングシステムとして、Linuxは安定して効率的であり、多くの場合、高電流アプリケーションの展開に使用されます。 2。開発環境として、Linuxは効率的なコマンドラインツールとパッケージ管理システムを提供して、開発効率を向上させます。 3.埋め込まれたシステムでは、Linuxは軽量でカスタマイズ可能で、リソースが限られている環境に適しています。

Linuxで倫理的ハッキングを習得するための必須ツールとフレームワークLinuxで倫理的ハッキングを習得するための必須ツールとフレームワークApr 11, 2025 am 09:11 AM

はじめに:Linuxベースの倫理的ハッキングでデジタルフロンティアを保護します ますます相互に接続されている世界では、サイバーセキュリティが最重要です。 倫理的なハッキングと浸透テストは、脆弱性を積極的に特定し、緩和するために不可欠です

Linuxの基本を学ぶ方法は?Linuxの基本を学ぶ方法は?Apr 10, 2025 am 09:32 AM

基本的なLinux学習の方法は次のとおりです。1。ファイルシステムとコマンドラインインターフェイス、2。LS、CD、MKDIR、3。ファイルの作成と編集などのファイル操作を学習するマスター基本コマンド、4。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール