1

我正在阅读Apache Curator的文档,但我无法准确理解会话到期时它尝试应用的策略是什么。

它会立即将连接设置为 LOST,还是会重试重新连接并重新建立所有观察者,并且只有在 N 次尝试失败后才会将连接设置为 LOST?

如果它尝试重新建立,它会正确重置临时节点和手表吗?

4

1 回答 1

2

首先,在 ZooKeeper 中,会话到期(从客户端的角度来看)在您重新建立与健康集成的连接之前不会发生。即你不知道你的会话已经结束,直到你重新连接。

Apache Curator(注:我是主要作者)引入了“连接状态”的概念,它是 ZooKeeper 内部状态概念之上的抽象。重要的是,Curator 的连接状态处理已从 3.x 之前的版本和 3.x 及更高版本更改。

在 3.x 之前,Curator 的连接状态与 ZooKeeper 会话没有关系。连接状态 LOST 仅意味着配置的 RetryPolicy 已放弃。在 Curator 3.x 及更高版本中,当与 ensemble 的连接丢失时,Curator 会设置一个内部计时器,如果该计时器在重新连接到 ZooKeeper ensemble 之前通过协商的会话超时,Curator 将更改为 LOST 并“伪造”会话超时以内部管理的 ZooKeeper 句柄。

这在这里描述:http: //curator.apache.org/errors.html

于 2017-01-28T21:55:36.890 回答