Zookeeper API包含一個名爲zoo_async()的操作。該文件說,鑑於操作用於zoo_async操作的功能
沖洗領導頻道
是否有人可以解釋這種操作的功能和建議,我們可能需要使用此操作一些使用情況?
Zookeeper API包含一個名爲zoo_async()的操作。該文件說,鑑於操作用於zoo_async操作的功能
沖洗領導頻道
是否有人可以解釋這種操作的功能和建議,我們可能需要使用此操作一些使用情況?
此功能的代碼是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中的命名選擇強調執行的操作。