web-dev-qa-db-ja.com

2つのバックエンドシステム間でデータを転送する方法についてのアドバイスが必要

私はここ数週間、顧客向けのREST APIの実装に取り​​組んできました。まだ要件はありませんが、分析を行うのは本当に素晴らしいことだと思います。この。

たとえば、どのクライアントからのリクエスト数を追跡​​する場合などです。

APIサーバーからデータを受信する必要がある分析アプリを週末に作成することを計画しています。私はこれまでこのようなことをしたことがないので、いくつかの設計上の質問があります。

これにはどの方法/プロトコルが最適ですか?

APIサーバーがログ/データを分析アプリにプッシュして永続化できるようにし、チャートやグラフなどを使用して素敵なUIを作成できるプッシュモデルを使用することを考えていました。 RESTをHTTPで使用するのは、私が最もよく知っていることです。しかし、Webソケットの使用も検討していました。調査を行ったところ、違いは理解できたと思いますが、それでもまだですどちらが良い選択であるかは私にはあまり明確ではありません。

選択に影響を与える可能性のある設計上の決定は次のとおりです。APIサーバーは、要求が行われるたびにこれらのログ/データをプッシュする必要がありますか?もしそうなら、多くの小さなリクエストを処理するのに適しているので、WebSocketの方が良いかもしれないと思います。

一方、このAPIサーバーは大量のリクエストを受信して​​いる可能性があります。また、最初に大量のリクエストログ/データを収集してから、それをバッチとして分析アプリに送信することも考えていました(時間間隔に基づいて、またはカウントに基づいて)。これがより良いアプローチ(バルク対個々のプッシュ)である場合、RESTここでより意味がありますか?

これについての考えやコメントを聞いてみたいです。私は皆から学ぶためにここにいます、あなたの時間をどうもありがとう!

2
Isaiah Lee

応答を形成するために絶対に必要でない限り、ユーザーが応答を待っている間は、別のサーバーへの同期要求は実際にはありません。分析の記録はユーザーへの応答を変更しないものであるため、これらの処理は非同期で実行する必要があります。

この種の問題は、多くの場合、各要求の情報をある種のメッセージキューにプッシュすることで解決されます。これは、要求の速度を低下させないように非常に迅速に実行できます。次に、分析システムはメッセージをキューから引き出して、独自の時間にメッセージを処理します。使用される実際のプロトコルは、使用することを決定したメッセージキューによって異なります。

2
Sean Burton