1

私は別のデータベースに接続する2つのmico-serives AとBを持っています。Mico serivesからAとBの両方のオブジェクトを同じトランケステーションに保存する必要があります。2つのマイクロサービス間で2フェーズコミットを行う方法(Spring-boot)?

私は、netflix-ossでSpringのマイクロサービスを使用しています.2段階コミットを行う最良の方法を提案してください。

答えて

3

分散環境で従来のトランザクションシステムをマイクロサービスに実装することはできません。

あなたはイベントソーシング+ CQRSテクニックであり、アトミックであるため、モノリシックシステムでトランザクションや2PCを実装するようなものが得られます。

他の可能な方法は、このようにリンクインが使用していると思いますが、それ自体の短所や賛否があります。トランザクションログマイニングです。例えば、異なるデータベースのバイナリログは異なり、同じ種類のデータベース内のイベントには異なるバージョン間の違いがあります。

私はあなたがマイクロサービスAとBの間で複数のイベントを転送し、ドメインに状態を更新した後CAP定理結果整合性ベースに到達しようと、イベント・ストア内のイベントソーシング+ CQRSと文字列のイベントを使用することを示唆しています各ステップにおいて

あなたがMySQLや他のシステムのようなイベント・ストアに異なるmicroservicesと文字列、それらを間にイベントソースのイベントを送信するまたはカフカActiveMQのRabbitMQのようなメッセージブローカーを使用することが示唆されます。

トランザクションを模倣するこの方法のもう1つの利点は、完全な監査ログを持つことです。

+0

ありがとうございます。 – sathees

+0

あなたの歓迎をお試しください... –

+0

このスレッドで私を助けることができますか?https://stackoverflow.com/questions/44063886/how-to-achieve-orchestration-with-spring-boot-micro-service – sathees

1

これはアーキテクチャ(マイクロサービス)の問題です。 Springブートまたはnetflix-ossは直接的な解決策を提供しません。独自のソリューションを実装する必要があります。 event driven architectureで確認してください。それはあなたにいくつかのアイデアを与えることができる。

関連する問題