2017-12-11 8 views
0

私はちょうどカフカを学び始めました。ソーシャルメディアWebアプリケーションを構築しようとしています。私は、バックエンド(バックエンドからデータベースやその他のサービスへの通信)にKafkaを使用する方法についてかなり明確です。カフカブローカーに直接生産しているWebフロントエンドは実行可能なアイデアですか?

しかし、フロントエンドとバックエンドとの通信方法はわかりません。私はアーキテクチャを次のように考えていた:フロントエンド - >カフカ - >バックエンド


フロントエンドはコンシューマとしてプロデューサおよびバックエンドとして機能します。この場合、フロントエンドはKafkaブローカーに公開するために必要なすべてのリソースを持っていると思われます(たとえ私がKafkaにセキュリティを実装していても)。今、このシナリオが可能です:

私はフロントエンドを偽装し、私のカフカブローカーに馬鹿げた/無効なメッセージを送信することを言います。これらのメッセージがバックエンドに到達すると、これらのメッセージを処理してフィルタリングできるようになりました。しかし、私はカフカがこれらのメッセージを一時的に保存することを知っています。そのような「偽の」メッセージが大量に公開されていると、私のKafkaサーバはDDOSの問題に直面しないでしょう。なぜなら、バックエンドによって実際に消費されるまでフィルタリングされないので、

もしそうなら、どうすればこれを防ぐことができますか?

これは良い選択ではありませんか?フロントエンド/バックエンド通信にRESTを使用することもできます。その後、Kafkaはバックエンドからデータベースやその他のものと通信するために使用されます。

また、このようなメッセージを検出してフィルタリングするミドルウェア(REST)もあります。

+0

気をつけてください理由を説明するためにdownvote?これは本物の質問ですが、私は多くの研究をしても答えを見つけることができません。この質問を改善するために他に何ができますか? – user3271166

+0

必要に応じてヘルプセンターで概説されているように、特定のプログラミング問題について具体的な質問をしていないので、おそらく下落し、閉鎖に投票しました。これは非常に幅広く、あなたが現在やっていることの明確な概要がない意見を求めています。これは、この事実に基づいたプラットフォームでは許可されていません。これが週末の遅くの夜でなければ、私は今までに閉鎖されていたと確信しています。 – Rob

+0

私が尋ねたのは、「フロントエンドがプロデューサーとしてカフカにメッセージを投稿した場合、どのようにして不要なDDoS攻撃などを防止するのか?どのように幅広いのかは分かりませんが、将来的にはより良い言葉を試してみます。 – user3271166

答えて

3

最も簡単な方法は、

があなたのフロントエンドに必要な一切カフカのクライアントコードはありません、あなたはHTTP(Sを使用することができますこの方法詳細はこちらhttps://docs.confluent.io/1.0/kafka-rest/docs/intro.html

を参照してくださいカフカRESTプロキシにフロントエンド農産物を持つことです)、標準のオフロードバランサ、およびAPI管理ツールを備えています。

+0

答えをありがとう。それは確かに問題を解決するようです。しかし、私はそれが私自身の "ミドルウェア"を実装するのとどのように違うかもしれないのか分かりません。したがって、フロントエンド - >私のミドルウェア - >カフカ - >バックエンド。さらに、私は、RESTに限定されるのではなく、私が好む技術や方法を使用することができます(将来、REST以外に切り替えることを決めた場合)。 私は私の上記の考えの正しい軌道にいるのですか? – user3271166

+0

REST以外のものを使用する場合は、Kafka Connectをご覧ください。 MQTT、AMQP、Webソケット、およびその他の多くのhttps://www.confluent.io/product/connectors/用のコネクタがあります。独自のミドルウェアを実際に構築したいのであれば、Kafka Connectの美しさは既にたくさん書かれており、オープンソースなので、すでに知っていることから始めることができます。 –

関連する問題