2016-11-05 24 views
2

使用節點-JS作爲消息傳遞層

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

容易在錯誤處理方面

(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 

(如半開連接,應答分組管理和拾取右窗口/緩衝大小)和可擴展性(對於使用樹狀連接的10-100臺服務器)?

如果node-js層僅用於I/O,對於基本交換機/路由器上的羣集(例如infiniband),它會比MPI更好嗎?

現在,我想要tcp-ip選項,並且已經有太多的異常來處理,而且還沒有完成。由於桌面操作系統有最大的連接,所以在發送/計算數據之前,數組的序列化也需要檢查服務器和客戶端的序列號以及更多的地址。無處不在,它說異步是最好的。我剛開始使用1個線程連接1個版本。線程版本也有持久的本地數據來保存計算設備信息和編譯的內核(對於opencl)。

如果我理解正確,mpi和node-js都需要將它們的運行時安裝在服務器和客戶端上,但tcp-ip不需要這樣的東西。但這會不會平衡其他困難呢?

在node-js和C#之間添加ramdrive讓我想起了它,因爲它很容易從node-js(和C#)訪問文件,而不需要擔心tcp連接。 Http聆聽在node-js中也幾乎是單行的,只是傳遞數據。

+2

不知道細節很難說,但http解決方案會比如果你工作的套接字級別更慢。 Zeromq是解決這類問題的非常好的解決方案。 – Hosar

回答

2

不知道你在做什麼的細節,很難推薦一個特定的解決方案......但我懷疑你正在重新制定一個解決方案。

結賬Redis。大多數語言都有客戶端庫,它通過網絡工作,處理各種數據類型,甚至支持pub/sub。它的構建是可笑的高性能...... Redis的開發人員爲許多應用程序做出了許多正確的權衡。