小编noc*_*hum的帖子

Curator 中的超时配置

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

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

运行客户端程序时,我通过关闭 Curator 用于与 Zookeeper 通信的 NIC 来模拟网络分区。根据我所看到的行为,我有几个问题:

  1. ConnectionStateManager - State change: SUSPENDED10 秒后我看到一条消息。Curator 进入 SUSPENDED 状态之前的时间长度是否可配置(基于其他超时值的百分比),还是始终为 10 秒?
  2. 自上次成功检测信号以来,配置的 15 秒会话超时过后,我没有收到任何通知。确实ZooKeeper - Session: 0x14adf3f01ef0001 closed在日志中看到一条消息,但是这似乎并没有作为我可以捕获或侦听的事件而逐渐出现。我在这里错过了什么吗?
  3. ConnectionStateManager - State change: LOST在连接丢失近两分钟后,我最终收到一条消息。为什么这么久?
  4. SUSPENDED如果我的目标是使用 InterProcessMutex 作为防止 HA 场景中脑裂的方法,那么似乎最安全的方法是锁持有者在收到消息时假设它已丢失锁,因为它完全是Zookeeper 可能在网络分区的另一端在它不知情的情况下释放了锁。这是一种典型/理智的方法吗?

apache-zookeeper apache-curator

5
推荐指数
1
解决办法
4987
查看次数

标签 统计

apache-curator ×1

apache-zookeeper ×1