【发布时间】:2017-11-26 18:52:17
【问题描述】:
Zookeeper API 包含一个名为 zoo_async() 的操作。文档说给定的操作用于
刷新领导频道
有人能解释一下这个操作的功能并提出一些我们可能需要使用这个操作的用例吗?
【问题讨论】:
Zookeeper API 包含一个名为 zoo_async() 的操作。文档说给定的操作用于
刷新领导频道
有人能解释一下这个操作的功能并提出一些我们可能需要使用这个操作的用例吗?
【问题讨论】:
这个函数的代码在zookeeper.c。我们可以看到它正在向 ZooKeeper 服务器发送一个SyncRequest:
struct SyncRequest req;
这意味着 C 客户端 API 中的 zoo_async 等价于 Java 客户端 API 中的 sync。
可以调用这个方法来保证客户端的ZooKeeper状态视图完全赶上服务器端的视图。这种方法在实践中很少使用。大多数 ZooKeeper 使用模式不需要它。 Consistency Guarantees 上的 Apache ZooKeeper 文档包含有关同时一致的跨客户端视图问题以及如何将 sync 方法应用于该问题的进一步讨论。
您可能想知道 C API 中的 async 和 Java API 中的 sync 之间的命名不一致。混淆是由于操作是在客户端和服务器之间同步状态,但它是异步执行的,客户端在完成时会收到回调。因此,它是一种“异步同步”。看起来 C API 中的命名选择强调函数的异步特性,而 Java API 中的命名选择强调执行的操作。
【讨论】: