问题标签 [apache-curator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1520 浏览

frameworks - 策展人框架不允许我检查连接

我正在检查 CuratorFramework 实例的连接,当我在调试模式下它通过正常,但是当我在运行模式下它通过验证考虑条件为假。

代码有问题吗?这就是我创建实例的方式:

0 投票
1 回答
262 浏览

apache-zookeeper - Apache Curator 和 ZooKeeper 观察者节点

伙计们,

我们正在使用 Apache Curator 访问 ZooKeeper 集合(A、B、C)

CuratorFrameworkFactory.newClient(zookeeperConnectionString, retryPolicy)

我们最近在这个集合中添加了两个新的观察者节点 (D,E)。现在我们的 zookeeperConnectionString 有 A,B,C,D,E

问题 - Curator 是否具有始终从连接字符串中提供的观察者节点读取/写入的智能?(或)它是否在 zookeeperConnectionString 中随机选择一个成员(或)它是否默认为观察者。

谢谢

0 投票
2 回答
1589 浏览

hadoop - 为什么在 sessiontimeout 值后临时节点没有从 Zookeeper 中删除

我正在使用 CuratorFrameworkFactory.newClient 方法创建一个临时节点,该方法采用 znodes 地址,sessiontimeoutinms,connectiontimeoutinms,Retry) 。我将 5*1000 作为 sessiontimeoutinms 传递,将 15*1000 作为 connectiontimeoutinms 传递。此方法能够在我的 zookeeper 中创建 EPHEMERAL 节点,但在应用程序运行之前不会删除此 EPHEMERAL 节点。

为什么会发生这种情况,因为 sessiontimeout 是 5 秒。

0 投票
1 回答
615 浏览

java - 我如何知道策展人 InterProcessSemaphoreMutex 在丢失后是否被重新获取?

我正在使用InterProcessSemaphoreMutex curator recipe来确保我的申请流程始终是单例的。互斥锁有时会因为暂时的网络错误或应用程序暂停(例如,因为 GC)而丢失。我正在使用重试策略,以便进程可以尝试重新获取锁。如果无法在(比如说)5 分钟内重新获得锁,我希望我的应用程序进程退出。

配方的文档建议我们可以监听 Co​​nnectStateChange 事件。指示与 zookeeper 的连接的事件 LOST 已丢失,因此进程也丢失了锁。这样,进程可以检测它是否丢失了锁。

该进程如何检查是否成功重新获取锁?我在互斥锁上找不到任何可以为我提供此信息的方法。可疑有用的“isAcquiredInThisProcess”方法并没有真正给我这些信息。

0 投票
1 回答
1037 浏览

distributed-computing - curator 的持久临时节点是否只是带有重试的常规临时节点?

我是 curator 和 zk 的新手——我想与社区的其他人再次确认我的理解。策展人的文档似乎没有得到很好的涵盖。

curator 的持久临时节点基本上是临时 znode,但有额外的机制在断开连接后重新建立连接?还有其他不明显的区别吗?

ps 有没有 zk 的社区/讨论组(或者更好的是,策展人)?一个简单的谷歌搜索没有出现任何东西。

0 投票
1 回答
827 浏览

apache - Apache Curator (Scala) 重新连接的新会话没有丢失状态更改

我们一直在看到以下行为,但不确定这是一个已知的错误,还是仅仅是错误配置或滥用库。

  • 使用 curator-framework 2.7.0 Scala 库、zookeeper-3.4.5
  • 在 127.0.0.1:2181 运行连接到本地 zk 服务器的 scala 应用程序。我们已经用不同的重试策略重现了这一点,但为了简单起见,让我们假设我们的重试策略休眠 30 秒并无限期重试。
  • 跟踪 scala 应用程序日志和本地 zk 服务器日志
  • 运行“sudo iptables -A OUTPUT -p tcp --dport 2181 -j DROP”并等待。
  • 最终看到 SUSPENDED 状态更改日志出现在 scala 应用程序日志中。
  • 最终“会话过期”日志出现在 zk 服务器日志上。如果我们现在解除 iptables,scala 应用程序将注册一个 LOST,然后是一个 RECONNECTED。这是我们所期望的。
  • 相反,如果我们在服务器记录 SessionExpiration 之后继续等待而不是立即解除 iptables,我们会在日志中看到 retryPolicy 事件触发并失败。据我所知,仍然是预期的。
  • 问题是如果我们在“很长一段时间”之后提升 iptables,之后会发生几次重试。这里似乎发生的是带有新会话 id 且没有丢失状态更改的 RECONNECTED。最终结果是我们已连接但丢失了所有临时数据并且不尝试重建它,因为此逻辑与 LOST 状态更改相关联。

这似乎与客户端会话 ID“超时”或“清除”有关,以便服务器重新连接假定客户端已经知道会话已过期。对此有任何确认吗?我们目前的想法是在之前和之后缓存​​会话 id 并模拟我们自己的 LOST 状态更改,但这似乎有点像我们在与 api 作斗争。

谢谢

0 投票
1 回答
464 浏览

apache-zookeeper - 命名空间/zookeeper chroots 如何在 Apache Curator 中协同工作

chrooted 路径和命名空间在Apache Curator中是否意味着同样的事情?

例如,如果我们创建 curator myserver:2181/pathA,是否意味着命名空间将设置为pathA

或者,如果命名空间设置为pathA,这是否等于将 zk 路径设置为myserver:2181/pathA

如果有人可以比较两者的常见用法,那将很有帮助。

0 投票
1 回答
2827 浏览

java - ZooKeeper 食谱和 Apache Curator

我试图准确了解 Apache ZooKeeper(“ZK”)解决了哪些类型的问题,也许他们的食谱页面是最好的起点。

首先,我做出以下假设

  • ZooKeeper API(在 Java 和 C 中都可用)公开了这 7 个简单的方法,然后允许您建立自己的使用模式,称为“ZK 食谱”
  • 然后由您自己使用这些 ZK 食谱来解决分布式编程中的问题
  • 或者,您可以使用Apache Curator附带的那些,而不是构建自己的 ZK 食谱
  • 因此,无论哪种方式,您都在使用 ZK 食谱(同样,自产或由 Curator 提供)来解决分布式计算问题

我相信Apache Kafka就是一个例子,其中 Kafka 使用 ZK 创建分布式队列(这是列出的 ZK 配方之一)。因此,如果我的假设是正确的,ZK 会公开这些 API 方法,Apache Kafka 的创建者要么直接使用 ZK,要么使用 Curator 来实现“队列”ZK 配方。

如果我的上述任何假设是错误的,请从纠正我开始!假设我或多或少走上了正轨:

查看 ZK 食谱列表,我看到以下内容(非详尽):

  • 障碍
  • 锁具
  • 领袖选举

为了让我欣赏这些食谱和他们提出的解决方案,我首先需要欣赏他们解决的问题!我从基本的 Java 并发中了解锁是什么,但我只是没有看到何时需要“分布式锁”的用例。对于领先的选举,我能想到的 - 作为一个首先需要它的用例 - 如果您正在构建一个您想要附带内置主/从或主要/辅助功能的应用程序。也许在那种情况下,你会使用 ZK 来实现你自己的“Leader Election”配方,或者只是使用 Curator 的Leader Latch开箱即用。至于障碍,我看不出它们与锁有什么不同。所以我问:

  • 我的主/从或主要/次要问题是 ZK 领导者选举配方的准确用例吗?
  • 分布式锁的例子是什么?它解决了什么问题?
  • 障碍同上:锁和障碍有什么区别?
0 投票
1 回答
285 浏览

mpi - Apache Curator 性能好吗?

我对策展人和动物园管理员的工作有一个高层次的想法。但是,我不知道他们是在内存中还是在磁盘上管理信息。例如,屏障或分布式队列的“收据”建议在特定路径打开一个节点(节点是文件?);这些节点是在内存中维护的,还是在磁盘/HDFS 上的文件?我认为跨机器的传统屏障现在需要通过策展人屏障来完成;因此,如果涉及繁重的操作,这些操作会不会很慢?

Curator 屏障与传统的 MPI 屏障相比在性能方面如何?

0 投票
5 回答
12755 浏览

guava - 如何实现分布式限速器?

比方说,我有 P 个进程在 N 个物理机器上运行一些业务逻辑。例如,这些进程调用一些 Web 服务 S。我想确保所有 P 进程相结合,每秒对服务 S 的调用不超过 X 次。

如何实施这样的解决方案?

Google Guava 的速率限制器适用于在单机上运行的进程,但不适用于分布式设置。

是否有任何可用于 JAVA 的标准、即用型解决方案?[可能基于zookeeper]

谢谢!