0
A
回答
1
UDP不可靠。我正在選擇尼特,但不能保證UDP或者交付訂單或交付。在同一主機上的兩個進程之間,這可能永遠不會表現爲一個問題,但在極端負載情況下可能會出現這種情況。
UDP數據包的開銷也比Unix套接字多得多。再說一遍,除非是最極端的負載,否則這不太可能是一個實際問題,並且在擔心這個問題之前,您會遇到很多與負載相關的問題,因爲兩者的開銷在現代計算方面都是名義上的。
如果你真的擔心性能和可靠性,堅持使用Unix套接字。
如果您有將來進行分發和負載平衡的計劃,如果您需要支持多個主機,UDP將爲您提供更大的靈活性。
說了這麼多,這些都沒有一個現實的問題。大多數服務都使用TCP來進行本地通信,然後在其他層上提供ZeroMQ等服務。你幾乎肯定不應該擔心這種表現。使用能讓代碼更容易編寫和維護的軟件,並在萬一需要的情況下擴展系統。把新服務器放在問題上比將人工時間重新設計成沒有靈活性的軟件更容易和更便宜。
另請注意,ZeroMQ(和其他消息隊列系統)將選擇最有效的傳輸機制。例如,如果可能的話,ZeroMQ將使用IPC(進程間通信),這比UDP或Unix套接字要快得多,如果你需要的話,它也可以擴展到全球數千個主機,而且你基本上贏了不必改變你的代碼。
切勿過早優化。
0
一個unix套接字肯定會通過tcp/ip堆棧節省上下文切換和封裝/解封裝的開銷。但是,這種收益將會如何感知?我認爲這取決於您對性能和可靠性的要求以及您期望此服務器處理的負載。
相關問題
- 1. 服務器的非阻塞套接字
- 2. 加速非阻塞Unix套接字(C++)
- 3. Java套接字服務器阻塞
- 4. 非阻塞的客戶端和服務器套接字用C
- 5. 非阻塞套接字
- 6. C套接字服務器,Java套接字客戶端:阻塞!
- 7. 非阻塞TCP服務器
- 8. 帶選擇的非阻塞套接字
- 9. 帶輪詢的非阻塞套接字
- 10. 如何在QNX中設置UDP套接字爲非阻塞
- 11. 處理'非阻塞'套接字連接
- 12. 使用select與阻塞和非阻塞套接字的影響
- 13. 非阻塞UDP I/O vs阻塞Java中的UDP I/O
- 14. 服務器的非阻塞TCP套接字抽出時間來傳輸內容
- 15. 我們可以用阻塞套接字做一個非阻塞的服務器嗎?
- 16. Android非阻塞從套接字讀取
- 17. SSL和NIO非阻塞套接字
- 18. 關閉非阻塞套接字通道
- 19. OCaml:Lwt和非阻塞套接字
- 20. 非阻塞套接字,錯誤總是
- 21. recv與非阻塞套接字
- 22. 套接字:非阻塞關機(SHUT_WR)?
- 23. 非阻塞套接字和io
- 24. sendfile()完成到非阻塞套接字
- 25. C/C++套接字和非阻塞recv()
- 26. 非阻塞套接字和發送()
- 27. 多線程與非阻塞套接字
- 28. php socket_write通過阻塞和非阻塞套接字
- 29. epoll +非阻塞套接字慢於阻塞+超時?
- 30. BlackBerry非阻塞UDP API