ServiceMix 4 中的集群

Posted

技术标签:

【中文标题】ServiceMix 4 中的集群【英文标题】:Clustering in ServiceMix 4 【发布时间】:2011-02-23 20:34:25 【问题描述】:

我正在尝试配置 Apache ServiceMix 4 以提供其文档中提到的负载平衡功能(例如这里:http://servicemix.apache.org/clustering.html)。虽然提到了,但我找不到确切的方法。

这个想法是让 2 个 ServiceMixes(例如在 LAN 中)安装相同的 OSGi 服务。当客户端尝试使用该服务时,负载均衡器会将他带到其中一个 ServiceMixes 上的适当服务实例。

有没有简单的方法可以做到这一点?

【问题讨论】:

【参考方案1】:

我没有分布式 OSGi 的经验,所以我只会谈论基于 JMS 的集群解决方案。

这是一个很好的 ServiceMix 4 JBI 集群示例(请相信他,您必须关闭管道订阅...): http://trenaman.blogspot.com/2010/04/four-things-you-need-to-know-about-new.html

这也很重要: trenaman.blogspot.com/2009/03/new-jms-flow-in-servicemix-4.html

“JBI 集群”这个名称表明您应该使用这种机制来集群您的应用程序,但在大多数情况下,最好使用简单的 JMS 端点来实现集群功能。如果您可以完全避免 JBI,则尤其如此。

【讨论】:

【参考方案2】:

我还没有达到我的项目的这个阶段,所以我没有使用它的经验;但 Karaf 有一个子项目 Cellar,它是围绕分布式 OSGi 设计的。

【讨论】:

【参考方案3】:

Fabric8 (http://fabric8.io/) 可以进行 Karaf/ServiceMix 集群以及更多开箱即用的功能。它还具有额外的集群 Camel 组件,例如主节点和结构端点

http://fabric8.io/gitbook/camelEndpointMaster.html http://fabric8.io/gitbook/camelEndpointFabric.html

有一个集群的 Camel 示例,证明了这一点

https://github.com/fabric8io/fabric8/tree/master/fabric/fabric8-karaf/src/main/resources/distro/fabric/import/fabric/profiles/example/camel/cluster

然后,客户端将在提供服务的活动节点之间进行负载平衡。因此,如果您有 5 个节点,那么它会在这些节点之间保持平衡。如果其中一个节点死亡或停止等,那么它只是在 4 个仍处于活动状态的节点之间保持平衡。因此,该解决方案具有完全的弹性和可扩展性。

原理如下图所示:

【讨论】:

以上是关于ServiceMix 4 中的集群的主要内容,如果未能解决你的问题,请参考以下文章

Servicemix 4、DOSGi 和 Zookeeper

Apache Karaf 与 Servicemix

在 Linux (Servicemix) 下运行时在工作表上调用 autoSizeColumn 时崩溃

ServiceMix 中 Apache-Camel 路由的管理和监控

SCR(ServiceMix)没有拾取OSGI组件?

Spring 集成与 ServiceMix ESB