【问题标题】:TIbco EMS Client Fault ToleranceTIbco EMS 客户端容错
【发布时间】:2014-05-21 10:59:43
【问题描述】:

我知道 Tibco EMS 在服务器端的热备份配置中提供容错功能,详见the User's Guidethis answerhere

但在客户端,Tibco EMS 是否为容错客户端提供开箱即用的解决方案? 一个例子:在主题Sports.F1.PitStop 上,两个客户端(server1、server2)注册为发布者。这个想法是如果 server1 上出现问题(即 server1 上的发布者出现故障),server2 将无缝地继续发布该主题。那么问题来了,Tibco EMS 是否提供这样的客户端容错能力?

【问题讨论】:

    标签: distributed-computing fault-tolerance tibco-ems


    【解决方案1】:

    没有。

    EMS(或 JMS)不支持客户端容错功能。原因很简单:通常,发布者进程彼此不认识。

    详细说明:

    主题通常接受许多发布者(两个以上)。 在发布/订阅场景中,发布者不知道订阅者,并且在某种程度上他们通常不知道其他发布者。

    您的解决方案:

    关于您的解决方案我的第一个问题:为什么两个服务器不能同时发布消息?

    我认为您有充分的理由(例如来自 server1 和 server2 的消息是多余的)。在这种情况下,您将不得不在“主动”和“被动”服务器之间进行某种通信。

    可能性 1:Server2 连接到一个简单的 service/rmi/other 心跳机制,并且可以判断 Server1 是否/何时停止发布。

    可能性 2:Server2 本身订阅了该主题,并且可以判断消息何时停止。

    最后一点: 如果您的意思是shared "subscriptions"(例如,在两台服务器之间共享一个持久订阅):新的 JMS 2.0 API 支持此功能。 EMS 8 是唯一支持 JMS 2.0 的 EMS 版本。

    【讨论】:

    • 冗余是原因
    【解决方案2】:

    我不确定我是否完全理解您的问题。 EMS 是消息代理。它代理消息。这就是它所做的一切。如果您有多个服务器发布到同一个主题,那么这对 EMS 来说很好。如果您的发布者自己处于故障转移配置中,因此只有一个正在主动发送,而另一个在第一个失败时接管,那么 EMS 就不会关心。

    管理从一个发布者到另一个发布者的故障转移机制,这是您必须自己开发的东西。 EMS 不提供任何支持。您需要某种机制让 server2 知道 server1 何时关闭。有几种方法可以做到这一点:

    • 使用心跳机制,主动服务器定期发送心跳消息(也可能通过 EMS),被动服务器监听它们,当它们停止时,假设 server1 已关闭。
    • 在 server1 和 server2 之间使用主动打开的连接(例如打开一个简单的 tcp 端口并通过定期发送虚拟消息来阻止它自动关闭),并在该端口上进行打开读取。当 server1 出现故障时,您将收到连接错误,您无需等待心跳超时。
    • 使用第三方监控工具(如 openview、tivoli 或 nagios)检测 server1 已关闭并通知 server2。
    • 您可以使用 EMS 上的一项功能。 EMS 具有您可以订阅的系统管理主题,并且基本上可以记录内部发生的任何事情。您可以订阅连接和断开事件以监控任何连接到 EMS 或从 EMS 断开连接的组件。如果 server1 失败,这将显示为断开连接事件。

    【讨论】:

      【解决方案3】:

      心跳机制:

      https://support.tibco.com/s/article/Tibco-KnowledgeArticle-Article-33918

      例如:

      client_heartbeat_server=10
      client_timeout_server_connection=35
      server_heartbeat_client=10
      server_timeout_client_connection=35
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-10-23
        • 1970-01-01
        • 2011-04-03
        • 1970-01-01
        • 2017-01-07
        • 2016-10-21
        • 2010-12-11
        • 2011-04-03
        相关资源
        最近更新 更多