动物园管理员检查外部资源的可用性



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

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

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

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

动物园管理员或 Apache 策展人中是否有任何用于处理外部资源状态要求的配方?

如果 Zookeeper 不适合管理外部资源状态,通常如何管理此类外部资源的检测信号要求?

是的,这可能是在ZooKeeper的帮助下解决的一个好案例。您的应用程序确实会监视 ZK 数据树中具有临时节点的部分,并且如果其中任何一个节点不存在/关闭,则能够做出反应。

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

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

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

最新更新