dubbo笔记-remoting(7)心跳检查

2018-11-23  本文已影响23人  兴浩

Dubbo采用双向心跳的方式检测Client端与Server端的连通性。

1 心跳请求的发送

在信息交换层服务端实现类HeaderExchangeServer和客户端实现类HeaderExchangeClient中包含一个 心跳定时任务HeartBeatTask:

对于所有类型的请求消息,该处理器都会更新对应通道中 最近一次接收消息 的时间;
对于心跳请求消息,该处理器接收心跳请求并构建对应的心跳响应通过通道Channel发送回去;
2.3 心跳超时的检测及处理
在信息交换层服务端实现类HeaderExchangeServer和客户端实现类HeaderExchangeClient中包含一个 心跳定时任务HeartBeatTask:

HeartBeatTask会循环检测Client或Server中绑定的网络通道Channel,当发现通道中 最近一次接收消息 的时间与当前检测时间间隔超过 心跳超时时间 时,会触发心跳超时逻辑的执行;
对于服务端,心跳超时发生时,会调用channel.close()主动断连对应通道;
对于客户端,心跳超时发生时,会调用client.reconnect()执行网络通道重连逻辑。如果重连失败则不做处理等待下次心跳超时检测时再次触发重连逻辑;

上一篇 下一篇

猜你喜欢

热点阅读