web-dev-qa-db-ja.com

リアルタイムデータからグラフを生成するアーキテクチャ

リアルタイムデータからグラフを入力する必要があるアプリケーションを開発しています。
リアルタイムデータはKafkaキューから取得されます。

Angular8にあるフロントエンドにこのリアルタイムデータをどのように送信すればよいですか?
これまでのところ、2つのアプローチについて考えてきました。

  1. Kafkaキューを介してサーバーからプッシュベースのキューメカニズムを使用し、次にServer-Sent Events(SSE)を介してデータをフロントエンドに転送します新しいデータがキューからフェッチされます(これは二重通信ではないため)。

  2. プッシュベースのKafkaキューを使用し、Angular自体からそれをサブスクライブします。

Web-socketsがオプションになることは知っていますが、二重通信は必要ありません。データはサーバーからのみ送信されます。

これは正しいアプローチですか?それとも他に良い方法がありますか
また、フロントエンドからキューをサブスクライブすることは良い習慣ですか?

私はDjangoをバックエンドに、そしてAngularをフロントエンドに使用しています

1
saintlyzero

Kafka Queueがどのように機能するかわかりません。しかし、 Django REST Framework を使用してバックエンドを検討することをお勧めしますその後、JSONを使用してAngularにアクセスし、結果を表示できます。

その場合は、Djangoアプリでモデルを作成して、データベースに格納する必要があるデータの種類を説明する必要があります。これが完了したら、Django REST frameworkAPIを介してどのモデルにアクセスする必要があります。Webサイトのドキュメントは非常に優れています。

次に、Apache KafkaとPython/Djangoの間の接続を設定する必要があります。あなたはそのためにこれらのプロジェクトをチェックアウトすることができます:

次に、作成したモデルをデータベースに追加するために、 Djangoコマンド を作成する必要があります。また、cronjobを追加して、新しいデータをフェッチする頻度でコマンドを実行できます。

2
Marcus

二重通信の必要がないことは、Webソケットやその他のソリューションを回避する理由にはなりません。選択するテクノロジーは、次のニーズのバランスを取る必要があります。

  • 迅速な開発
  • メンテナンスが簡単
  • この通信を処理するためのサーバーおよびクライアント側のコードライブラリの可用性
  • Webフロントエンドフレームワークとキューテクノロジーを簡単に切り替えることができます。

私はあなたのKafkaキューをクライアントに公開するのは怖いです。つまり、キューは公的に利用可能になります。少なくとも、キューに接続する小さなサーバーアプリケーションを実行して、強制できるようにします。認証と承認、およびキューからのデータの再フォーマットにより、JavaScriptでのクライアントでの作業が容易になります。これにより、クライアント(AngularJSアプリケーション)がデータソース(your Kafkaキュー)。これらのイベントのソースを変更する必要がある場合に備えて、将来の柔軟性を提供します。

2
Greg Burghardt