我使用node zookeeper client for html" target="_blank">java脚本作为zookeeper客户端。
我有这样的想法:
const setWatch = (path, functionToExecuteOnTrigger) => {
client.getData(path, (event) => {
// watcher set here
functionToExecuteOnTrigger(event);
}, null)
// null because we are only setting watch here and do not need data
}
这个函数会在zoomaster中的一个路径
处设置一个watch,一旦触发了watch,就会调用Watcher回调,并调用一个要在watch上调用的合适函数。
对于这样设置的手表:
setWatch('/data1', function1);
setWatch('/data2', function2);
因此,对于在data1
节点中触发的监视,函数1被执行;对于在data2
节点中触发的监视,函数2被执行
现在,如果我必须不断地在节点上保持监视,以便每次发生变化时,我将不得不在它们被触发后立即重新注册监视:
const setWatch = (path, functionToExecuteOnTrigger) => {
client.getData(path, (event) => {
// watcher set here
// immediately set another watch for the same function
setWatch(path, functionToExecuteOnTrigger);
functionToExecuteOnTrigger(event);
}, null)
// null because we are only setting watch here and do not need data
}
现在我对zookeeper手表的了解是:
由于上面提到的第二点,在触发手表和重新注册手表之间可能会发生丢失更改的情况。正如动物园管理员的官方文件所述。
所以我想知道是否有一种方法,我们可以为同一个节点设置多个表(以队列的方式),并且每次触发一个表时,只调用一个触发器回调。比如:
setWatch(node, functionToTrigger, noOfWatchesInQueue)
所以我们将为同一个节点和触发器设置多个手表,只有一个设置的手表被触发。因此,如果我为同一个节点设置了3个手表
对于触发器1,watch 1被激活
对于触发器2,watch 2等等。。。
这样,在重新注册手表所需的时间内,不会错过任何活动。
有没有办法得到这个??我不知道这是否已经在某个地方完成了,任何关于这个问题的研究材料或实施方案都会很有帮助。
我认为你应该始终做到以下几点:
>
为znode设置手表
检索znode的实际值
通过这种方式,您将始终知道znode的最新版本,并将在将来发生更改时收到通知。还要注意,每个znode都有版本号——您可以轻松检查它是否已更改。
在Zookeeper中,无法通过一次操作在同一节点上设置多个手表。这是故意的。
正如您所提到的,(根据留档)当您读取节点的值时,您只能设置一个手表。这样,您将始终拥有一个节点的最新值,并在它更改时得到通知。这就是ZK提供的,而不是更多。
Zookeeper手表不是事件队列,也不能保证你会收到每一个事件。
我认为最好描述一下你的用例,并试着得到一个答案,什么是完成它的最佳工具,因为ZK可能不合适。
分布式 Apache HBase 安装依赖于正在运行的 ZooKeeper 集群。所有参与节点和客户端都需要能够访问正在运行的 ZooKeeper 集合。 Apache HBase 默认为您管理 ZooKeeper“集群”。它将启动和停止 ZooKeeper 集合作为 HBase 启动/停止过程的一部分。您还可以独立于 HBase 管理 ZooKeeper 集合,只需将 HBase 指向它应该使用
我已经设置了一个带有SASL SCRAM安全性的Kafka集群,它运行良好。 根据文档,我使用了命令< code>kafka-configs.sh来创建用户名和密码,并授予该用户对主题的访问权限。 这也很棒。 但是, 命令本身不需要任何类型的身份验证,因此在我看来,任何人都可以运行该命令并在Kafka中创建自己的用户并授予自己的权限。 也许我需要在Zookeeper上启用SASL安全性?但我找不到
注意:这将只显示有关使用Java消费者API的消费者(非基于ZooKeeper的消费者)的信息。 此工具还适用于基于ZooKeeper的使用者: bin/kafka-consumer-groups.sh--zookeeper localhost:2181--description--group my-group null PS:这似乎没有出现在2.5文档中
我正在为Storm开发代码,这是开发人员的一个示例。我的问题是,当您从IDE Eclipse运行此代码时,不会建立Storm和ZooKeer之间的连接。ZooKeer在2181中运行,也设置在storm.yaml. 我的例外是: 有什么想法或程序要执行吗?是否从配置代码中传递?和我一样?
假设我有 3 台 Kafka 服务器。服务器 1 zoopkeeper1 服务器 2 zoopkeeper2 服务器 3 zoopkeeper3 在集群配置中,zoopkeepers 会发生什么?它们是为每个服务器单独维护的,还是会在群集配置中同步其数据?
在Zookeeper和代理身份验证上启用SASL时,我面临以下错误。 以下配置在JAAS文件中给出,该文件作为KAFKA_OPTS传递,将其作为JVM参数:- Kafka经纪人的服务器。属性设置了以下额外字段:- Zookeeper属性如下所示: