使用 Node-Js 作为消息传递层
Using Node-Js as message passing layer
是
(client) node-js http request <-----------> node-js http listen (server)
^ 100/1000 MBit/s ^
| LAN |
v v
a file in ramdrive a file in ramdrive
^ ^
| |
v v
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
在错误处理(例如半开连接、确认数据包管理和选择正确 window/buffer 大小)和可扩展性(使用树状连接的 10-100 个服务器)方面?
如果仅将 node-js 层用于 I/O,对于基于 switches/routers(例如不是 infiniband)的集群,它会比 MPI 更好吗?
目前,我正在尝试 tcp-ip 选项,但已经有太多异常需要处理,而且还远未完成。由于桌面 os,存在最大连接数,数组的序列化还需要检查服务器和客户端的字节顺序,以及更多要在 sending/computing 数据之前进行平衡。也到处都说异步是最好的。我刚开始使用 1 个线程用于 1 个连接版本。线程版本也有持久的本地数据来保存计算设备信息和编译内核(对于 opencl)。
如果我理解正确的话,mpi 和 node-js 都需要在服务器和客户端上安装它们的运行时,但 tcp-ip 不需要这样的东西。但这不会平衡其他困难吗?
我想到了在 node-js 和 C# 之间添加 ramdrive,因为从 node-js(和 C#)访问文件看起来很容易,比 tcp 连接要担心的事情少得多。 Http监听在node-js中也几乎是一行,只是传数据。
不知道你在做什么的细节,很难推荐一个具体的解决方案...但我怀疑你正在重新发明一个解决方案。
查看 Redis。大多数语言都有客户端库,它在网络上工作,处理各种数据类型,甚至支持 pub/sub。它的构建具有惊人的性能......Redis 的开发人员为许多应用程序做出了很多正确的权衡。
是
(client) node-js http request <-----------> node-js http listen (server)
^ 100/1000 MBit/s ^
| LAN |
v v
a file in ramdrive a file in ramdrive
^ ^
| |
v v
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
在错误处理(例如半开连接、确认数据包管理和选择正确 window/buffer 大小)和可扩展性(使用树状连接的 10-100 个服务器)方面?
如果仅将 node-js 层用于 I/O,对于基于 switches/routers(例如不是 infiniband)的集群,它会比 MPI 更好吗?
目前,我正在尝试 tcp-ip 选项,但已经有太多异常需要处理,而且还远未完成。由于桌面 os,存在最大连接数,数组的序列化还需要检查服务器和客户端的字节顺序,以及更多要在 sending/computing 数据之前进行平衡。也到处都说异步是最好的。我刚开始使用 1 个线程用于 1 个连接版本。线程版本也有持久的本地数据来保存计算设备信息和编译内核(对于 opencl)。
如果我理解正确的话,mpi 和 node-js 都需要在服务器和客户端上安装它们的运行时,但 tcp-ip 不需要这样的东西。但这不会平衡其他困难吗?
我想到了在 node-js 和 C# 之间添加 ramdrive,因为从 node-js(和 C#)访问文件看起来很容易,比 tcp 连接要担心的事情少得多。 Http监听在node-js中也几乎是一行,只是传数据。
不知道你在做什么的细节,很难推荐一个具体的解决方案...但我怀疑你正在重新发明一个解决方案。
查看 Redis。大多数语言都有客户端库,它在网络上工作,处理各种数据类型,甚至支持 pub/sub。它的构建具有惊人的性能......Redis 的开发人员为许多应用程序做出了很多正确的权衡。