私はサービス間の同期通信がアンチパターンであることを知っていますので、私のユースケースに対する良い解決策を探しています。マイクロサービス間の同期REST通信の代替
私はこの2つのサービスがあります。Users Feed Service
(UFS):
Location Service
ユーザーは今すぐ
スコア管理し、ユーザーの場所
Score Service
を管理し、私は別のサービスを構築する必要があります。指定された場所の近くのユーザーをスコア(降順)で並べ替える必要があります。場所を考えると 同期ソリューション
- 、UFSは、それがスコア・サービス(REST)から彼女のスコアを取得し、それらの一つ一つについてロケーションサービス(REST)
- から近くのユーザーをフェッチ
- 最後に、メモリ内のユーザーをソートして返します
代替方法はありますか?私はこのような何かを考えています
イベントキューソリューション
- UFSデータベース、またはメモリキャッシュか何かそれがキュー内の変更を待機
- に格納し、ユーザーの場所とスコアスコアサービスと位置情報サービスが公開された時点でデータを更新する
このように、クライアントからのリクエストがあった場合、ユーザーフィードサービスはネットワークリクエストを実行する必要はありませんそれは必要なデータを所有しています)
これは良い解決策ですか?どうすれば改善できますか?大量のユーザーで拡大縮小できますか?
これは、同期ソリューションよりも優れた拡張性を備えています。キューよりも優れており、APIよりも大量に処理されます。ただし、キューに入れられたトランスポートインフラストラクチャの複雑さに対してこれを相殺する必要があります。あなたは時期尚早に最適化していないと確信していますか? –
おそらく私です。私は将来の変化を恐れている。同期からキューベースのシステムへの移行は困難です。とにかく、あなたは正しいと思います。たぶん、私は存在しないスケーラビリティの問題を解決しようとしています。ありがとう –