web-dev-qa-db-ja.com

NodejsをJavaフレームワークにオフロードすることにより、集中的な計算と計算に使用できますか?

ループバックに基づいてRest APIバックエンドを設計しようとしています。 nodejsはスレッドをブロックするため、計算があまり良くないと聞いたので、Javaを使用して計算するだけでなく、nodejsと同じサーバーでホストするために非同期呼び出しを実行できますか?アプリケーションは実行されていますか?このようにして非ブロッキングになります。たとえば、AWS ec2インスタンス、Host Tomcatサーバー、nodejs nginixサーバーでホストしている場合、同じインスタンスでホストしていることをお勧めしますか?

1
Makjb lh

技術的には、あなたが提案していることは非常に実現可能です。それは実際、ごく一般的なことです。これまでは、マシンのサイジングには限られた選択肢しかなかったため、コンピューティングリソースを効率的に使用するためには、これを行う必要がありました。ただし、多くの課題がありますが、仮想マシン、コンテナー、サーバーレスアーキテクチャを使用して現在の場所にたどり着くまでの主な説明になります。他の人がすでに述べたように、負荷に関して容量を管理しようとすると複雑になり、ピーク負荷に対応するためにVMをオーバーサイズする必要があります。

AWSについて言及しているので、利用可能なオプションの多くはこれらの課題を回避するために設計されていることを理解する必要があります。あなたが言及したデザインは、コンテナに非常によく適合します。 Kubernetesポッド。必要のないときに追加の容量を支払うことを避けながら、高負荷でスケーリングできるようにする多くのオプションがあります。また、アクティブに使用されていないときに費用がかからないラムダも検討する必要があります。

そう、あなたはこれを行うことができますが、それはかなり時代遅れのアプローチです。利用可能なオプションを考えると、このルートに進む正当な理由はないようです。

1
JimmyJames

Node.jsは通常IOにバインドされているため、実際に同じインスタンスで別のサービスを実行できます。両方のヒープがメモリに収まることを確認してください。

ただし、CPUストールが発生し始めるとすぐに、Node.jsのレイテンシに影響します。したがって、バックエンドの負荷テストを行って、CPU使用率が妥当な範囲内であることを確認してください。

個別のインスタンスに投資することは、それらを個別にスケーリングできるため、長期的にはより良いオプションとなる可能性があります。

0