我的意思是 zookeeper 是否提供任何通用的同步机制 IPC(例如共享区域)或者它是应用程序设计的问题并且应该使用例如 ZeroMQ、RabbitMQ、Redis 来实现?
1 回答
“Zookeeper 是一个高度可配置、高度可用的协调服务。” 来自 Hadoop 的书,因为 Hadoop 是在底层使用 Zookeeper 构建的。将其与 JMS 消息传递 (MQ) 进行比较——在 Zookeeper 中,节点必须相互了解,它们已准备好进行协调;我猜可以将队列与 Znodes 进行比较……使用 Zookeeper 有两种类型:永久的,在节点关闭后将持续存在,并且在整个集群中持续存在,以及瞬态;它不会持续存在,但仍然可以在 zookeeper 集群中看到。比较是艰难的——猜测这取决于它需要如何使用。我可能将 MQ 用于远程消息传递,而 Zookeeper 将更多地用于协调(保持动物园)而不是远程消息传递。人们可能会想到耦合以及事物耦合的紧密程度或松散程度。
在一个非常简单的用例中,所有节点都在运行 Zookeeper 并相互了解;一个节点向 Zookeeper 写了一些东西,他们都看到了。Zookeeper 有手表,可以与事件进行比较。因此,如果出现新的 znode 或节点上的数据发生更改,则可能会触发程序或服务来执行某些操作。
zkCli.sh(在 zookeeper 的 bin 目录中)在此之后启动一个到 zookeeper 的接口,可以执行“ls”,并查看用“znodes”编写的内容。例如:“ls /Systems”可能会根据其用途显示一堆节点,例如 system1、system2、system3。...系统。这些可能是已注册的系统,即:它们有一个注册它们运行的服务。执行 get /Systems/system1 会获取其数据,这些数据可能是有关系统的信息,例如内存或其工作内容。
还有更多,但希望有所帮助。