web-dev-qa-db-ja.com

JavaをCPUの重いタスクを処理するためのnodejsと統合する方法は?

I/Oの重いタスクとCPUの重いタスクの両方に適したWebテクノロジーを選択しようとしています。 NodeJsは大きな負荷の処理に最適であり、スケールアウトすることもできます。しかし、私はCPUの重い部分で立ち往生しています。別のテクノロジー(Javaなど)をノードに統合して、他のスレッドでアルゴリズムを実行し、その結果をノードで再び使用できるようにすることは可能ですか?既存のソリューションはありますか?他の提案は非常に良いでしょう。

15

Node JSをJava node-Java を使用して)統合できます。

19
JustDanyul

前の回答で述べたように、Javaと通信するnpmモジュールであるnode-Javaを使用できます。 Node.jsをJavaライブラリとしてラップし、JavaでNode.js APIを提供する J2V8 を使用することもできます。

5
irbull

答えは ラムダアーキテクチャ です。

NodeJsはそれ自体が素晴らしいです。高速なクエリを軽量に処理し、データに対して追加の計算を行う必要はありません。

CPUの負荷が高いタスクは、JVMをベースにした特殊なコンポーネントに簡単に委任できます(最も有名なものはJVMです)。これは、メッセージブローカーとマイクロサービスを使用して適切に実装されます。

イベントベースのアーキテクチャ。nodejsはCassandraまたはMongodbのようなデータベースおよびApache Sparkのようなクラスターコンピューティングフレームワークに接続できます(ただし、必ずしもシステムのcpuが多い部分を処理するための問題に依存します。軽量コンテナは、各コンポーネントが存在するためのニースの隔離されたランタイム環境を提供することにより、ケーキにアイシングを追加します。

これは、この質問に関するこれまでの私の結論です。上記の提案は、ノードをJavaまたはCPUを多用する他のJVMベースのソリューションの下にラップする必要性を排除するものだと思います。

2

NodeJSは、c ++で記述されたv8 JavaScriptエンジンに基づいています。

したがって、NodeJSのc ++で完全にネイティブなアドオンを作成することが可能です。これらのリソースのいくつかをチェックしてください:

0
Luke the Geek