【问题标题】:How to deal with the return value of setData() with curatorcurator如何处理setData()的返回值
【发布时间】:2014-08-14 18:23:46
【问题描述】:

如果我想更新 Zookeeper 中的数据

client.setData().forPath(“/demo/path”, “其他数据”.getBytes())

会成功吗

  1. ZooKeeper 不错
  2. 客户很好
  3. 路径存在
  4. 你有权

我看过一篇文章,说2N+1台服务器中只有N台服务器认为更新操作成功,那么就成功了,如果少于N台服务器认为OK,会返回FAIL,和我该如何处理这些情况

http://blog.cloudera.com/blog/2009/12/observers-making-zookeeper-scale-even-further/

【问题讨论】:

    标签: apache-zookeeper apache-curator


    【解决方案1】:

    当你使用 "client.setData().forPath("/demo/path", "other data".getBytes())" 设置数据时......如果有数据,它将返回一个统计结构写入成功。

    1. 如果节点不退出,它将抛出异常。所以它是 始终建议您在设置数据之前检查“client.Exits()”。
    2. 当客户端没有 ACL 权限时,会在 统计结构。

    在内部将第一个数据写入主机,然后写入其他从机。 如果您有 2N+1 个服务器的集合..您需要至少 N 个服务器运行该集合才能运行。

    希望这能解决你的问题

    【讨论】:

    • 所以当我做对了只是因为 ZooKeeper 更新过程可能不会成功时更新将失败
    • 如果 N 个服务器没有在 2N+1 个服务器的集合中运行...更新将失败。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-17
    • 2013-11-06
    • 2014-01-07
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    相关资源
    最近更新 更多