1 分布式系统中是否需要应用层心跳?
在采用TCP连接作为进程间通信方式的分布式系统中。当任意一方进程意外退出的时候,对方能及时得到连接断开的通知,操作系统会关闭进程中使用的TCP scoket,会往对方发送FIN分节。keepalive并不是TCP协议规范的一部分,但在几乎所有的TCP/IP协议栈(不管是Linux还是Windows)中,都实现了keepalive。有了keepalive是不是就不需要应用层心跳了呢?答案是还是需要。心跳除了证明程序还活着之外,更重要的一点是证明程序可以正常工作。keepalive有操作系统处理,当进程发生阻塞或死锁,操作系统还是可以正常收发keepalive消息,而连接的另一端并不知道进程异常。另外还有几个异常情况,TCP keepalive 无法解决:在采用TCP连接作为进程间通信方式的分布式系统中。当