Sockets ZMQ模式经销商/路由器心跳

Sockets ZMQ模式经销商/路由器心跳,sockets,client-server,zeromq,router,heartbeat,Sockets,Client Server,Zeromq,Router,Heartbeat,我有一个经销商插座在客户端,谁是连接到路由器插座在服务器端 我经常看到心跳机制:服务器定期向客户机发送消息,以便客户机知道他是否正确连接到服务器,因此,如果客户机有一段时间没有收到消息,则可以重新连接 例如,这里的偏执狂海盗模式: 但是在一些测试之后:如果客户机暂时断开与服务器的连接并再次找到它,则客户机将自动重新连接到服务器套接字(他接收到发送的消息…) 我想知道在哪种情况下心跳是必要的?心跳不是保持连接活动的必要条件(TCP套接字有一个ZMQ\u TCP\u KEEPALIVE套接字选项)。

我有一个经销商插座在客户端,谁是连接到路由器插座在服务器端

我经常看到心跳机制:服务器定期向客户机发送消息,以便客户机知道他是否正确连接到服务器,因此,如果客户机有一段时间没有收到消息,则可以重新连接

例如,这里的偏执狂海盗模式:

但是在一些测试之后:如果客户机暂时断开与服务器的连接并再次找到它,则客户机将自动重新连接到服务器套接字(他接收到发送的消息…)


我想知道在哪种情况下心跳是必要的?

心跳不是保持连接活动的必要条件(TCP套接字有一个ZMQ\u TCP\u KEEPALIVE套接字选项)。相反,双方都需要心跳才能知道对方仍在活动。如果任何一方确实检测到另一方处于非活动状态,则可以采取替代措施

不活动可能是因为进程已死亡、处于死锁状态、在网络活动之间做了太多工作或网络故障等。从另一方面来看,如果没有更多信息,所有这些场景都无法区分

在网络中,设计工作是很容易的。最困难的部分是处理失败。你必须考虑尽可能多的可能的失效模式,并在设计协议中处理它们。心跳通常是这些协议中有用的一部分。比如说,它们远比通过使用监视事件来确定套接字是否仍处于运行状态有用得多


话虽如此,如果您的应用程序不需要任何特定级别的可靠性;也许当发生故障时,您可以直接重启设备。那你就不必担心心跳了。毕竟,指南中有很多模式没有使用它。这是课程的马匹。

“发生故障时只需重启设备”
[+1]