【问题标题】:How to invalidate the kazoo lease on zookeeper when the client holding the lease disconnect from zookeeper or crashes当持有租约的客户端与zookeeper断开连接或崩溃时,如何使zookeeper上的kazoo租约无效
【发布时间】:2020-06-26 00:27:07
【问题描述】:

我正在关注 kazoo 租赁食谱。客户端创建一个 znode "/db_leases/hourly_cleanup" 并获取租约。当客户端与 zookeeper 断开连接或崩溃时,我希望其他客户端,即试图获取相同的租约,能够获取它。由于 znode 没有被删除,即使没有其他客户端持有租约,其他客户端也无法获取租约。当持有租约的客户端退出或崩溃时,如何确保删除 znode "/db_leases/hourly_cleanup"。

【问题讨论】:

    标签: apache-zookeeper kazoo


    【解决方案1】:

    在租约到期之前,其他客户端将无法获取它。一旦duration参数指定的时间过去,它将能够获得租约。

    【讨论】:

    • 是的,我理解那部分。此设置在公共云中运行。实例崩溃后,新实例启动,但由于租约尚未过期,无法获取锁。我的问题:有没有办法检测到没有人持有租约的情况,从而删除 znode 以便新启动的实例可以获得租约或锁定?
    • 租约不包含有关承租人在做什么或是否还活着的信息。它只知道客户端 ID 和持续时间。如果您想检测承租人故障并进行故障转移,请将持续时间设置为较短,并让承租人在租约到期之前重新获得租约。如果该节点随后发生故障,它将过期,另一个节点可以接管。
    • 也可能是锁更适合您的用例。如果您描述用例,我可能会提供帮助。顺便说一句,我看到租赁文件可能不够清楚。我不再使用 ZK,也不会花时间在上面,但是如果您想创建 PR,我很乐意审查,
    猜你喜欢
    • 2015-05-26
    • 1970-01-01
    • 2015-10-13
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多