gpt4 book ai didi

java - Zookeeper 检查外部资源可用性

转载 作者:行者123 更新时间:2023-11-30 08:39:32 25 4
gpt4 key购买 nike

我在 Tomcat 服务器集群上部署了一个 Spring 应用程序,并将 Oracle 数据库和 JMS 服务器 (Tibco EMS) 作为外部资源。

我有一个非功能性需求来检查 DB 和 JMS 服务器是否可用,并在它们出现故障时通知 tomcat 集群。 (心跳管理)

Zookeeper 是否适合这个要求?我可以为这些资源创建临时 znode,当它们不可用/断开连接时,这些节点将从 zookeeper 中删除。然后,这些 znode 上的任何观察者都可以获得有关这些外部资源不可用的通知。

这个用例通常使用 zookeeper 处理吗?如果是,谁会在 zookeeper 中为 DB 和 JMS 服务器创建这些 znode?

Zookeeper 或 Apache curator 中是否有任何处理外部资源状态要求的方法?

如果 Zookeeper 不适合管理外部资源状态,那么通常如何管理此类外部资源的心跳需求?

最佳答案

是的,这可能是在 ZooKeeper 的帮助下解决的好案例。您的应用程序确实会监视 ZK 数据树中具有临时节点的部分,并且如果它们中的任何一个不存在/出现故障,它们将能够使用react。

您将遇到的问题是您的外部资源,例如您提到的 DB 和 JMS 服务器,必须首先将它们的临时节点发布到 ZK。如果它们是您无法轻松扩展以添加必要的 ZK 代码的第三方应用程序,这就很难了。 ZK 不会开箱即用。

在这种情况下,常见的方法是创建一个代理/主管应用程序,该应用程序在与您的外部服务相同的主机上运行,​​它监视目标进程并执行 ZK 通信部分(发布临时节点并保持 ZK 连接有效,包括作为 ZK 协议(protocol)一部分的心跳)。

我会建议使用 Curator,可能还有一些 curator 服务发现方法。但是,您很可能没有开箱即用的所需功能,并且至少需要编写一些代码来监视/监督您的数据库服务器并执行所需的 ZK 行为。

关于java - Zookeeper 检查外部资源可用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36078230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com