我正在阅读Apache Curator的文档,但我无法准确理解会话到期时它尝试应用的策略是什么。
它会立即将连接设置为LOST,还是会重新尝试重新连接并重新建立所有观察者,并且只有在N次尝试失败后才会将连接设置为LOST?
如果它试图重新建立,它会正确重置短暂的节点和手表吗?
答案 0 :(得分:2)
首先,在ZooKeeper会话到期时(从客户的角度来看),在您重新建立与健康集合的连接之前,不会发生这种情况。也就是说,在重新连接之前,你不知道你的会话已经结束。
Apache策展人(注:我是主要作者)介绍了"连接状态"这是ZooKeeper的内部国家概念之上的抽象概念。重要的是,Curator的连接状态处理已从3.x之前的版本和3.x及更高版本更改。
在3.x之前,Curator的连接状态与ZooKeeper会话没有任何关系。连接状态LOST仅表示已配置的RetryPolicy已放弃。在Curator 3.x及更高版本中,当与集合的连接丢失时,Curator设置内部计时器,如果该计时器在重新连接到ZooKeeper集合之前通过了协商会话超时,则Curator将更改为LOST和" fakes&#34 ;内部管理的ZooKeeper句柄的会话超时。