【问题标题】:Zookeeper to check external resource availabilityZookeeper 检查外部资源可用性
【发布时间】:2016-03-21 04:31:38
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: java apache-zookeeper


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢 cmets,我一定会查看馆长发现食谱,看看是否已经为类似要求编写了任何内容:)
    猜你喜欢
    • 1970-01-01
    • 2014-11-30
    • 2011-10-20
    • 2017-10-16
    • 1970-01-01
    • 1970-01-01
    • 2018-03-27
    • 2017-06-17
    相关资源
    最近更新 更多