因为注册中心的会话是有生命限制的,会话结束生命就要终止,为了防止因为会话闲置太久被杀了,所以必须要保持会话。
怎么保持呢?
我在dubbo的源码里面一直找不到dubbo注册session失效的事件的源码,所以我猜测,这个事件应该和znode做了捆绑,因为创建会话的时候生成了znode。
我查看了zookeeper,果然是有提供这样的机制。
zk有一种ZNODE类型Ephemeral,这种类型的节点具有的特征就是生命和session一样长,服务提供者向注册中心注册后就会创建Ephemeral类型的ZNODE,同时通过心跳保持会话,并缓存信息(以防注册中心挂后可以恢复现场)。