使用Node-Js作为消息传递层

(client) node-js http request <-----------> node-js http listen (server) ^ 100/1000 MBit/s ^ | LAN | vv a file in ramdrive a file in ramdrive ^ ^ | | vv C# program requesting C# or Java program compute on data computing 

比…容易

 (client)C# tcp ip <--------------------------------->C#/Java tcp ip (server) socket 100/1000 Mbit/s LAN socket 

在error handling(如半开连接,确认数据包pipe理和挑选正确的窗口/缓冲区大小)和可扩展性方面(对于10-100个使用树形连接的服务器)?

如果node-js层仅用于I / O,对于基本交换机/路由器上的集群(例如infiniband),是否会比MPI好?

现在, 我正在尝试tcp-ip选项,并已经有太多的例外处理,远远没有完成 。 由于桌面操作系统有最大的连接,在发送/计算数据之前,数组的序列化还需要检查服务器端和客户端的序列号以及更多的权重。 同样在各处,它说asynchronous是最好的。 我刚刚开始使用1个线程的1个连接版本。 线程版本也有持久的本地数据来保存计算设备信息和编译的内核(opencl)。

如果我理解正确,mpi和node-js都需要将它们的运行时安装在服务器和客户端上,但是tcp-ip不需要这样的东西。 但这会不会平衡其他困难呢?

在node-js和C#之间添加ramdrive是我想到的,因为从node-js(和C#)访问文件比tcp连接要less得多。 Http的收听在node-js中也差不多只是传递数据。

不知道你在做什么的具体细节,很难推荐一个特定的解决scheme…但是我怀疑你正在重新制定一个解决scheme。

检查Redis 。 大多数语言都有客户端库,它通过networking工作,处理各种数据types,甚至支持pub / sub。 它的构build是可笑的performance… Redis的开发者为许多应用程序做了许多正确的权衡。