2017-06-23 81 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中的命名選擇強調執行的操作。