【问题标题】:A scalable bus with multiple Camel instances具有多个 Camel 实例的可扩展总线
【发布时间】:2018-09-29 07:42:38
【问题描述】:

我的想法是使用骆驼解耦模块。为了支持可扩展性和故障转移,我想知道是否建议使用以下架构?

我有两个带有 Camel 嵌入式 AppCamel1 和 AppCamel2 的应用程序。然后我有独立的骆驼节点 Camel1 和 Camel2。

AppCamel1 将具有到 Camel1 和 Camel2 的具有故障转移/负载平衡的路由。这样,例如,如果 Camel1 崩溃,Camel2 将用于故障转移。

例如,Camel1 和 2 将使用 http 组件进行 REST 调用。 AppCamel1 到 camel1 或 2 也会有请求-回复。

这是一个有效的场景吗?

我应该使用什么来互连不同的 Camel 实例(AppCamel1 到 Camel1 或 2)? (我想知道是否可以在中间避免另一个组件,例如 jms 服务器)

谢谢!


根据博迪的回答编辑

REST 调用来自 Camel1/2。我想将 AppCamel1/2 与 Camel1/2 互连,看看我是否可以避免介于两者之间的任何事情。我猜 mina 是一种可能性,甚至是 http,但在这种情况下,AppCamel1 和 AppCamel2 需要知道 Camel1/2 不太好。

【问题讨论】:

    标签: apache-camel soa apache-servicemix


    【解决方案1】:

    这也在 Camel 邮件列表中进行了讨论,其中也有一些指示和建议 http://camel.465427.n5.nabble.com/scalable-bus-with-multiple-Camel-instances-tp5606593p5606593.html

    【讨论】:

      【解决方案2】:

      如果您尝试对 AppCamel1/2 的 HTTP 请求进行负载平衡,那么您需要介于两者之间的代理服务器(apache mod_proxy、perlbal 等)。要从 AppCamel1/2 到 Camel1/2 进行负载均衡,可以使用 Camel 的 load balancer 甚至 JMS 请求/回复...

      从 AppCamel1/2 到 Camel1/2,听起来您正在使用 REST 作为接口。如果您需要在实例之间进行更复杂的通信,那么我会使用 JMS(通过 camel-activemq)进行消息传递,使用 Hazelcast(通过 camel-hazelcast)进行分布式缓存/锁定等。

      【讨论】:

      • 我在问题中添加了一些细节
      【解决方案3】:

      如果您使用 jms 进行通信,则不需要特殊的负载均衡器。只需使用一个队列,让两个 Camel1/2 都听队列。然后它们将自动进行故障转移和负载平衡。

      【讨论】:

        【解决方案4】:

        我肯定会选择 jms 中间件。 Activemq 是自然的选择(camel 甚至被认为是 activemq 的子项目)。将 amq 与您的 canel 实例一起嵌入并集群它们是微不足道的。 Activemq 将能够为您处理负载平衡和故障转移。

        【讨论】:

          猜你喜欢
          • 2023-03-15
          • 1970-01-01
          • 1970-01-01
          • 2016-08-11
          • 1970-01-01
          • 1970-01-01
          • 2018-04-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多