我们的其中一个分布式应用程序正在使用心跳来检测对等方的断开连接(例如 LAN 断线等)。心跳有必要吗?
问问题
335 次
3 回答
1
是的。TCP 只会显示物理连接仍然存在(即套接字没有被路由器或操作系统拆除)。但不会说明应用程序的可用性。如果管道另一端的进程处于while(1);
循环中并且没有处理您的请求,那么您并没有真正连接到它。
于 2010-01-13T07:48:37.280 回答
1
也许,如果你没有心跳,你会怎么做?
如果您无法恢复,那么心跳就没有意义。
如果您使用从服务器到客户端的回调,您需要一种客户端可以要求服务器重新发送所有丢失的回调的方法,这并不容易。
此外,如果您没有心跳,这并不意味着消息稍后不会到达那里,因为可能存在各种网络延迟,只是重新发送您的消息是否安全?
心跳是容易的部分,困难的是心脏不跳动的时候怎么办!
于 2010-01-13T08:01:46.107 回答
0
这是一个很好的方法,可以知道您仍然在“应用程序级别”连接到另一端并且应用程序仍然可以通话。否则,您将不得不假设“另一端”无话可说,这很难与“另一端实际上在 35 秒前失去网络连接”分开。
于 2010-01-13T07:58:14.320 回答