2017-06-23 8 views
2

Zookeeper APIにはzoo_async()という操作が含まれています。ドキュメントには、特定の操作が zoo_async操作の機能

誰かがこの操作の機能を説明し、私たちは、この操作を使用する必要があるかもしれないいくつかのユースケースを提案してくださいすることができ

フラッシュリーダーチャンネル

に使用されていることを述べていますか?

答えて

1

この機能のコードはzookeeper.cです。私たちは、それがのZooKeeperサーバーにSyncRequestを送信していることがわかります。これは、CクライアントAPIでzoo_asyncは、JavaクライアントAPIでsyncと等価であることを意味し

struct SyncRequest req; 

このメソッドを呼び出すと、クライアントのZooKeeper状態のビューがサーバー側のビューに完全に追いついていることを保証できます。この方法は実際に使用されることはめったにありません。ほとんどのZooKeeperの使用パターンは、それを必要としません。 Consistency GuaranteesのApache ZooKeeperのドキュメントには、同時に一貫したクライアント間のビューの問題と、その問題にどのようにしてsyncメソッドを適用できるかについての詳細な議論が含まれています。

C APIのasyncとJava APIのsyncの間の名前の不一致が疑問に思えるかもしれません。この混乱は、操作がクライアントとサーバーの間の状態を同期させるという事実から発生しますが、非同期に実行され、クライアントは完了時にコールバックを受け取ります。したがって、これは「非同期同期」です。 C APIの命名は、関数の非同期性を強調しているように見えますが、Java APIの命名は実行されたアクションを強調することを選択しました。

関連する問題