I/Oの重いタスクとCPUの重いタスクの両方に適したWebテクノロジーを選択しようとしています。 NodeJsは大きな負荷の処理に最適であり、スケールアウトすることもできます。しかし、私はCPUの重い部分で立ち往生しています。別のテクノロジー(Javaなど)をノードに統合して、他のスレッドでアルゴリズムを実行し、その結果をノードで再び使用できるようにすることは可能ですか?既存のソリューションはありますか?他の提案は非常に良いでしょう。
Node JSをJava node-Java を使用して)統合できます。
前の回答で述べたように、Javaと通信するnpmモジュールであるnode-Javaを使用できます。 Node.jsをJavaライブラリとしてラップし、JavaでNode.js APIを提供する J2V8 を使用することもできます。
答えは ラムダアーキテクチャ です。
NodeJsはそれ自体が素晴らしいです。高速なクエリを軽量に処理し、データに対して追加の計算を行う必要はありません。
CPUの負荷が高いタスクは、JVMをベースにした特殊なコンポーネントに簡単に委任できます(最も有名なものはJVMです)。これは、メッセージブローカーとマイクロサービスを使用して適切に実装されます。
イベントベースのアーキテクチャ。nodejsはCassandraまたはMongodbのようなデータベースおよびApache Sparkのようなクラスターコンピューティングフレームワークに接続できます(ただし、必ずしもシステムのcpuが多い部分を処理するための問題に依存します。軽量コンテナは、各コンポーネントが存在するためのニースの隔離されたランタイム環境を提供することにより、ケーキにアイシングを追加します。
これは、この質問に関するこれまでの私の結論です。上記の提案は、ノードをJavaまたはCPUを多用する他のJVMベースのソリューションの下にラップする必要性を排除するものだと思います。
NodeJSは、c ++で記述されたv8 JavaScriptエンジンに基づいています。
したがって、NodeJSのc ++で完全にネイティブなアドオンを作成することが可能です。これらのリソースのいくつかをチェックしてください: