2016-09-14 8 views
0

スケーラブルな一連のマイクロサービスを展開したいと考えています。すべてのサービスは、RESTを介して互いに通信する必要があります。また、私は遅く不安定なサードパーティのサービスを要求する必要があります。 私はそれをイベント駆動型とし、apache kafkaを使用するというアイデアを考え出しました。RESTとKafkaを使用して非同期REST呼び出しの結果をクライアントにプッシュする方法

のような何か:

WebClient_X - 要求--->ロードバランサ - 前方 - > A-Service_1 - 要求---> ThirdPartyService

A_Service_1は結果のためThirdPartyServiceをポーリングする必要がありますカフカに書き込む。

A_Service_1 --->カフカ

今何ですか?

カフカのトピックに格納された結果を、要求しているWebClient_Xにどのように送り返すことが可能ですか? 覚えておいてください: - A-Serviceは、LBのN倍に展開されています。 - A-Service_1インスタンスがWebClientにResponse.created(uuid)を返しました。

WebClientをkafkaトピックを使用するようにするには解決策があります。しかし、これは愚かな考えであるようです。私は、次のアイデアを思い付いたたくさんそれについて考えた後

答えて

0

:a_serviceの

すべてのインスタンスがequalyカフカのトピックを消費(無バランシング)

結果がキャッシュに保存されている(ローカル)

Webクライアントは、結果をUUIDでポーリングする必要があります。

将来は、キャッシュをRedisクラスタまたはクラスタ化Memcacheに置き換えます。

ポーリングの代わりにウェブソケットが使用されます。しかし、これはいくつかのダウンサイズを持っているようです。

関連する問題