我正在开发一个将在 HP Blade /Linux 上运行的软件,每个 Blade 将有多个程序,我正在考虑使用 UDP 进行 IPC 通信。 Blade /程序之间的消息大小不会超过 400 字节。
我以前使用过 TCP,但我没有使用 UDP 的经验,所以这里的问题是,根据您的经验,使用 UDP 进行集群通信是否明智?
最佳答案
这取决于您对可靠性的要求。如您所知,UDP 不提供交付保证,甚至不提供排序保证(数据包可能会乱序到达)。如果您的应用程序能够容忍这种情况,或者如果您可以使用相对简单的代码使其能够容忍,UDP 绝对是更好的选择 - 它具有更低的延迟、更低的开销,并且在编程上更易于处理。
如果可靠性是绝对要求,那么除非您真的是硬核并试图从集群中榨取最后一点性能,否则请使用 TCP。否则,您只会发现自己试图重新发明 TCP 用于保证可靠性的机制,而且您可能不会像 TCP 那样做得好(它已经进行了数十年的调整和调整)。
另请注意,在小型 LAN 上,尽管缺乏任何保证,UDP 还是相当可靠的,但即使在完美的设置中,您仍然不得不期待偶尔会丢失数据包。集群的网络越复杂,系统的带宽利用率越高,它的可靠性就越低。
关于c - 集群通信中的 UDP 与 TCP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20792301/