我目前正在评估api的后端架构,深入了解node.js和j2ee应用服务器以及相应的j2ee war文件。 api将不得不计算相当大的cpu任务 - 更具体地说是神经网络的训练。您是否有任何关于应该用于机器学习的性能和/或包装设置的经验?是否还有其他我应该考虑的API技术 - 例如java微服务?
提前多多感谢, 菲利普
答案 0 :(得分:1)
我建议至少提供两项微服务。一个用于接受API请求。其他(s)用于计算。您可以选择这两种语言。
例如:
因此,您将卸载前端服务。它不会滞后于高负荷。第二个服务是使用CPU优化的库/语言编写的。此外,您可以在负载非常高的情况下扩展第二个服务。
答案 1 :(得分:1)
我遇到了完全相同的问题,并通过在R子进程中进行大量计算来解决它。我写了一个你现在可以尝试的简单的npm模块:
npm install computer
现在在您的节点应用程序中:
var computer = require('computer');
var R = new computer('C:/Program Files/R/R-3.2.0/bin/x64/R.exe');
R.start(function(){
R.run('cat("1 + 2 =", 1 + 2)', function(err, log){
console.log(log);
R.stop();
});
});
这允许您的单线程nodejs应用程序在向子进程卸载计算时保持精简和平均值。我甚至连接到R本身的数据库,所以这是在节点中进行heay计算的一种非常强大而有效的方法。
答案 2 :(得分:0)
根据问题做出决定 是任务CPU密集型还是I / O绑定型?” CPU密集型操作的一些示例是图形或视频编辑或任何需要大量计算能力的操作。 I / O绑定操作的一些示例是实时聊天,媒体流,文件处理等