gpt4 book ai didi

apache-zookeeper - Curator 中的超时配置

转载 作者:行者123 更新时间:2023-12-02 03:29:35 25 4
gpt4 key购买 nike

我创建了一个 Curator 客户端,如下所示:

    RetryPolicy retryPolicy = new RetryNTimes(3, 1000);
CuratorFramework client = CuratorFrameworkFactory.newClient(zkConnectString,
15000, // sessionTimeoutMs
15000, // connectionTimeoutMs
retryPolicy);

在运行我的客户端程序时,我通过关闭 Curator 用来与 Zookeeper 通信的 NIC 来模拟网络分区。根据我所看到的行为,我有几个问题:
  • 我看到一个 ConnectionStateManager - State change: SUSPENDED 10 秒后的消息。 Curator 进入 SUSPENDED 状态之前的时间量是可配置的,基于其他超时值的百分比,还是始终为 10 秒?
  • 我没有收到任何 自上次成功心跳以来配置的 15 秒 session 超时已过去后的通知。我ZooKeeper - Session: 0x14adf3f01ef0001 closed日志中的消息,但是这似乎不会作为我可以捕获或监听的事件而涓涓细流。我在这里错过了什么吗?
  • 我最终收到了 ConnectionStateManager - State change: LOST连接丢失后近两分钟的消息。为什么这么久?
  • 如果我的目标是使用 InterProcessMutex 作为在 HA 场景中防止脑裂的一种手段,那么似乎最安全的方法是让锁持有者假设它在 SUSPENDED 时丢失了锁。收到消息,因为 Zookeeper 完全有可能释放了锁
    它不知道在网络分区的另一侧。这是典型的/理智的方法吗?
  • 最佳答案

    这取决于您使用的是哪个版本的 Curator(注意:我是 Curator 的主要作者)...

    在 Curator 2.x 中,LOST 状态意味着重试策略已用完。这并不意味着 session 已经丢失。在 ZooKeeper 中,只有在与集合的连接修复后才会确定 session 丢失。因此,当 Curator 看到第一条“已断开连接”消息时,您会被挂起。然后,当由于重试策略放弃而导致操作失败时,您会丢失。

    在 Curator 3.x 中,LOST 的含义发生了变化。在 3.x 中,当收到“Disconnected”时,Curator 会启动一个内部计时器。当计时器超过协商 session 超时时,Curator 会调用 getTestable().injectSessionExpiration() 并发布 LOST 状态更改。

    关于apache-zookeeper - Curator 中的超时配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27912231/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com