Motan的心跳机制有两种,一种是Server(或者说服务发布者)发给注册中心的,一种是Client(或者说服务引用者)发给Server的。
Server HeartBeat to Registry
1 | public AbstractRegistry(URL url) { |
在创建Registry的时候会为REGISTRY_HEARTBEAT_SWITCHER这个开关,注册一个监听器,当开关的值发生变更的时候,执行相应的操作。这个机制是为了实现Server的预览以及优雅停机,Server跟zk等注册中心建立链接后,服务是unreachable状态,此时并不会真正对外提供服务。可以在unreachable状态下进行预览,确认服务正常后,在打开心跳开关,正式提供服务。服务下线时也是先停止心跳变为unreachable状态,等确认没有client调用后就可以停止服务了。