2017-06-23 57 views
2

Zookeeper API包含一个名为zoo_async()的操作。该文件说,鉴于操作用于zoo_async操作的功能

冲洗领导频道

是否有人可以解释这种操作的功能和建议,我们可能需要使用此操作一些使用情况?

回答

1

此功能的代码是zookeeper.c。我们可以看到,它正在发送SyncRequest到的ZooKeeper服务器:

struct SyncRequest req; 

这意味着zoo_async C客户机API中等同于Java客户端API中sync

可以调用此方法来保证客户端的ZooKeeper状态视图完全被服务器端视图所覆盖。这种方法在实践中很少使用。大多数ZooKeeper使用模式不需要它。关于Consistency Guarantees的Apache ZooKeeper文档包含关于同时一致的跨客户端视图以及如何将sync方法应用于该问题的问题的进一步讨论。

您可能想知道C API中的async与Java API中的sync之间的命名不一致。这种混淆源于操作是客户端和服务器之间的同步状态,但它是异步执行的,客户端在完成时接收回调。因此,这是一个“异步同步”。看来C API中的命名选择强调函数的异步性质,而Java API中的命名选择强调执行的操作。