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
在 Linux (Servicemix) 下运行时在工作表上调用 autoSizeColumn 时崩溃