2013-03-23 107 views

回答

1

UDP不可靠。我正在選擇尼特,但不能保證UDP或者交付訂單或交付。在同一主機上的兩個進程之間,這可能永遠不會表現爲一個問題,但在極端負載情況下可能會出現這種情況。

UDP數據包的開銷也比Unix套接字多得多。再說一遍,除非是最極端的負載,否則這不太可能是一個實際問題,並且在擔心這個問題之前,您會遇到很多與負載相關的問題,因爲兩者的開銷在現代計算方面都是名義上的。

如果你真的擔心性能和可靠性,堅持使用Unix套接字。

如果您有將來進行分發和負載平衡的計劃,如果您需要支持多個主機,UDP將爲您提供更大的靈活性。

說了這麼多,這些都沒有一個現實的問題。大多數服務都使用TCP來進行本地通信,然後在其他層上提供ZeroMQ等服務。你幾乎肯定不應該擔心這種表現。使用能讓代碼更容易編寫和維護的軟件,並在萬一需要的情況下擴展系統。把新服務器放在問題上比將人工時間重新設計成沒有靈活性的軟件更容易和更便宜。

另請注意,ZeroMQ(和其他消息隊列系統)將選擇最有效的傳輸機制。例如,如果可能的話,ZeroMQ將使用IPC(進程間通信),這比UDP或Unix套接字要快得多,如果你需要的話,它也可以擴展到全球數千個主機,而且你基本上贏了不必改變你的代碼。

切勿過早優化。

0

一個unix套接字肯定會通過tcp/ip堆棧節省上下文切換和封裝/解封裝的開銷。但是,這種收益將會如何感知?我認爲這取決於您對性能和可靠性的要求以及您期望此服務器處理的負載。