私はマイクロサービスアーキテクチャが比較的新しいです。適度なサイズのWebアプリケーションがあり、現在進めているモノリシックシステムではなく、マイクロサービスに分割することの長所と短所を比較検討しています。
私が理解している限りでは、マイクロサービスA
と、B
それぞれが他方のデータのサブセットに依存しているものを検討してください。A
何かが変更されたというメッセージが投稿された場合、B
そのメッセージを消費し、A
の情報のローカルコピーを複製し、それを使用してB
必要な処理を実行できます。
ただし、もしB
ダウンしたり失敗したりしてしばらくすると、再び元に戻ります。そのダウンタイム中に、A
さらに2つのメッセージを公開しました。の情報のB
ローカルコピーを更新する方法はどのようにしてわかりますA
か?
場合確かに、B
唯一の消費者であるA
のキューは、それはそれがオンラインに戻ったら、それを読み始めることができますが、どのような場合には、そのキューとそれらのメッセージの他の消費者が消費されているがありますか?
より具体的な例として、マイクロサービスがダウンしているUsers
間にBilling
サービスの電子メールアドレスが更新された場合、Billing
マイクロサービスが再び復旧した場合、電子メールが更新されたことをどのようにして知ることができますか?
マイクロサービスが復旧すると、「ちょっと復旧しました。現在の情報をすべて教えてください」というブロードキャストを行います。
一般に、データ同期の業界のベストプラクティスは何でしょうか?
Orders
何かを知る必要があるのUsers
ですか?