2017-11-09 2 views
0

現在、AWS EBSマイクロサービスドッカー環境を使用して、ScalaとAkkaで書かれたマイクロサービスを展開しています。マイクロサービスドッカーの誰かがクラッシュして再び再起動した場合。この場合、私たちはユーザーの要求を失い、サービスはそのような場合の応答を返しません。私の現在のアーキテクチャでは、何も問題なく最大1000件の同時リクエストを処理できます。この問題を回避するために、私はKafkaを使用してすべての要求と応答を格納して取得する予定です。AWS EBSマイクロサービスドッカー環境でKafkaを使用して、ユーザーリクエストの損失を避け、より多くの同時ヒットを処理します。

私はすべてのWebサービスのリクエストと応答を管理するためにKafkaを使用し、すべてのリクエストを処理して再度Kafkaに応答を保存するための別個のサービスまたはWebソケットを含める必要があります。この場合、私のコアプロセスドッカーがクラッシュまたは再起動した場合。いつでも要求と応答を失うことはありません。それは再びカフカからの要求を読んで処理し始めるでしょう。

すべてのWebサービスは、関連するトピックをKafkaに保存し、関連するトピックからの応答を取得し、API応答に戻ります。 Scala WebサービスでKafkaを使用するために、以下のライブラリが見つかりました。

https://github.com/akka/reactive-kafka/

enter image description here

私は効率的にクライアントアプリケーションからの同時多数の要求を処理するためにそれを使用するつもりです付属のアーキテクチャ図を確認してください。それは良いアプローチですか?私は自分のアーキテクチャで何かを変更する必要がありますか?

私は、このアーキテクチャを、カフカとマイクロサービスドッカーについてさらに研究した後で作成しました。このアーキテクチャに間違いがある場合は、教えてください。

+0

一般的に、これらの種類の質問は、その話題ではありません。この建築の中でカフカの使い方は何ですか?どうしてそんなことが必要なの? –

+0

クライアントアプリケーションからのリクエストをすべてkafkaに保存します。すべてのAPIが要求を格納し、コアプロセスが要求を処理して処理し、それを別のトピックに格納します。 APIは関連する相関IDを使用してこの応答を取得し、応答をクライアント・アプリケーションに戻します。私はデータの損失を避け、多数の同時リクエストを処理するためにKafkaを使用したいと考えています。 –

答えて

0

これはカフカのパンとバターなので、これでどのような建築上の問題にも遭遇するつもりはないと思います。カフカにはかなりの量の操作オーバーヘッドがあることに気をつけてください。はじめには、Confluentが書いたKafka:The Definitive Guide(https://www.confluent.io/wp-content/uploads/confluent-kafka-definitive-guide-complete.pdf)が参考になります。ドキュメンテーションで言及していない多くの一般的な運用上の問題について詳しく説明します。

関連する問題