群集通信中的UDP与TCP

时间:2013-12-26 22:50:38

标签: c network-programming ipc

我正在开发一款将在HP刀片/ Linux上运行的软件,每个刀片都有多个程序,我正在考虑使用UDP进行IPC通信。刀片/程序之间的消息大小不会超过400Bytes。

之前我曾经使用TCP而且我没有使用UDP的经验,所以这里的问题是,根据您的经验使用UDP进行集群通信吗?

1 个答案:

答案 0 :(得分:2)

这取决于您对可靠性的要求。如您所知,UDP不提供传送保证甚至订购保证(数据包可能无序到达)。如果您的应用程序能够容忍这一点,或者您可以使用相对简单的代码使其容忍,那么UDP绝对是一个更好的选择 - 它具有更低的延迟,更低的开销和更简单的编程处理。

如果可靠性是一个绝对的要求,那么除非你真的是核心并试图从群集中挤出最后一盎司的性能,否则只需使用TCP。否则你只会发现自己试图重新发明TCP用于保证可靠性的机制,而且你可能不会像TCP那样做得那么好(它需要几十年的调整和调整)。

另请注意,在小型局域网上,尽管缺乏任何保证,但UDP非常可靠,但即使在完美的设置中,您仍然需要偶尔丢弃数据包。群集网络越复杂,系统带宽利用率越高,可靠性就越低。