據我所知,0MQ應該比羣集環境中的TCP套接字快,我可以看到情況會如何(我認爲這就是他們所說的「比TCP更快,對於集羣產品和超級計算「在0MQ網站上)。但是,我會看到使用0MQ而不是TCP套接字在同一臺計算機上運行的兩個進程之間進行通信的任何類型的加速嗎?如果兩個進程通信在同一臺機器上,我們會看到使用ZeroMQ而不是TCP套接字的加速嗎?
回答
實際上,您並未在一臺計算機上運行,因爲虛擬機被視爲單獨的計算機。這意味着TCP套接字必須貫穿整個網絡堆棧,並且不能像在一臺機器上的進程之間進行通信時那樣採用快捷方式。
但是,你可以嘗試在ZeroMQ下的UDP多播,看看是否會加快你的應用程序。 UDP在廣域網上不太可靠,但是在虛擬機與主機通話的封閉環境中,可以安全地跳過所有TCP可靠性。
我想IPC應該比TCP更快。如果您願意轉向單一流程,INPROC肯定會快得多。
絕對必須有兩個過程。一個進程在虛擬機中運行,另一個在虛擬機外運行(但運行在同一臺機器上)與外部硬件設備進行通信。現在有一種擔心,即VM與外部進程通信的TCP套接字太慢,只是想知道我們是否可以使用0MQ進行改進。 – aneccodeal 2012-01-27 01:17:46
那麼,短版是試試看。
稍微長一點的版本是編寫TCP套接字可能很難,有很多事情很容易出現問題,但是0MQ保證消息將被完整傳遞。它也是由網絡套接字的專家編寫的,它們在世界上最好的意願,你可能不會,並且它們使用一些高級技巧來加快速度。
我認爲(沒有測試過)答案是錯誤的,因爲ZMQ可能會使用相同的標準C庫並添加一些消息標題。
同樣的事情適用於UDP。
同樣的事情適用於IPC管道。
ZMQ可以一樣快,但是因爲它添加了標題,所以它不太可能。
現在,如果您確實需要某種標題,ZMQ比您更好地實施它,現在可能會有所不同。像郵件大小或類型,但我離題了。
- 1. 使用tcp在同一臺機器上的進程間通信
- 2. 兩個JVM進程可以使用ZeroMQ在同一臺機器上進行通信嗎?
- 3. 位於一臺機器上或兩臺機器上的兩個進程的Java nio套接字通信
- 4. 如何通過同一臺機器上的TCP套接字在java中進行通信
- 5. 當同一臺計算機上的兩個進程通過TCP進行通信時會發生什麼?
- 6. 當同一主機上的兩個應用程序通過套接字進行通信時會發生什麼?
- 7. 什麼是使用TCP套接字的串行通信速度?
- 8. Erlang在兩臺計算機上進行兩個進程通信
- 9. 套接字通信在同一臺機器上工作,但不在不同機器之間
- 10. 通過文件或套接字在同一臺機器上進行客戶機 - 服務器通信
- 11. 我可以運行兩個使用傳播在同一臺機器上的進程,而不會看到對方嗎?
- 12. 如何知道TCP連接是否在同一臺機器上的兩個進程之間?
- 13. 使用套接字的TCP/IP通信
- 14. 在兩臺機器上運行的進程之間的通信
- 15. 我可以重新綁定一個ZeroMQ套接字到另一個端口而不破壞套接字嗎?
- 16. 同一臺機器上的進程間通信
- 17. 一個或兩個用於在單個主機上進行進程間通信的套接字
- 18. Erlang - 可以在不同進程的tcp套接字上同時發送(..)嗎?
- 19. 進程間通信是套接字通信可靠協議嗎?
- 20. 使用web api而不是主/從通信使用tcp套接字是不是一個好主意?
- 21. 連接到兩個不同端口上的服務器的TCP套接字
- 22. 同一臺機器上的兩個進程可以連接到同一個端口嗎?
- 23. 2臺不同服務器如何在同一臺「機器」中進行通信?
- 24. 兩個UNIX進程相同的TCP套接字上寫的同時
- 25. TCP套接字通信
- 26. 我們可以在同一臺機器上運行兩個不同執行器的gitlab運行器嗎?
- 27. 兩臺計算機之間使用python套接字進行通信
- 28. 兩個64位機器之間的TCP套接字編程
- 29. 與TCP套接字(服務器)通信
- 30. 同一臺計算機上的多個套接字線程
您選擇了嘗試使用UPDA多播的答案,試過了嗎?它是否改善了形勢,有沒有經驗反饋? – 2012-07-02 02:23:53
我不認爲接受的答案是正確的。問題就變成了ZMQ UDP能比標準C lib UDP更快嗎?我認爲答案是錯誤的,因爲ZMQ可能使用相同的標準C庫並添加一些消息標題。 – BAR 2015-08-17 03:39:31