c - 集群通信中的 UDP 与 TCP

标签 c network-programming ipc

我正在开发一个将在 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/

相关文章:

c - 如何确定接口(interface)名称

用于套接字的 C++ 迭代器外观

PHP to Go 使用 Unix 域套接字

c - 自旋锁函数的使用

c - gcc undefined reference 当我知道引用是正确的

c - 进程已完成,退出代码 (0xC0000005)

c - 需要帮助理解整数算术函数

c - 不兼容的指针类型在 C 中传递参数?

c - Linux服务器编程

c++ - 在Linux上广播IPC