Apache Camel和负载均衡

时间:2013-06-27 08:55:29

标签: apache-camel cluster-computing load-balancing producer-consumer

我们计划使用Camel在一些外部系统(FTP,SOAP-WS,REST-WS,主题,队列等等)之间进行集成。

我们可能会使用Spring配置(Camel上下文XML),因为信息量很大,我们计划将它部署到Tomcat集群。

我没有找到任何文档,如果它是一个可能的配置,如果两个应用程序(让它说是开头的两个tomcat)可能会干扰。

更新

在使用Camel三年之后,它似乎在某些情况下管理得非常好:JMS'和Web服务,负载平衡在这些情况下运行良好,但是在' JMS',如果我们不使用标题JMSXGroupID,我们会松开消息的顺序。

但是对于使用File(或FTP,sFTP,FTPS)的服务仍然存在问题。目前我们只激活一条腿从这个源消耗,如果腿下降,不幸的是在第二条腿没有自动启动路径来消耗FTP文件。

1 个答案:

答案 0 :(得分:1)

只要您不写入HTTP会话,您就不必关心任何事情 - 只需将一些Tomcat节点放在负载均衡器后面。如果您写入HTTP会话,那仍然很简单,但您可能(根据所选配置)配置会话复制。

我一直致力于在负载繁重的情况下工作的两个类似的系统集成项目。作为一个部署环境,我们选择了站在Apache服务器后面的集群Tomcat实例(通过AJP连接器进行通信)和BigIP负载均衡器(一段时间后我们切换到Nginx)。

这两个应用程序都接受了HTTP请求。其中一个是完全无状态的(类似代理),另一个必须保留一些特定于会话的信息。对于后者,我们必须确保放入会话的所有对象都是Serializable并配置会话复制。

我们已经做了很多测试,最后得到了久经考验的DeltaManager,没有粘性会话和同步复制模式。根据您的系统架构,您需要非常仔细地考虑这一点,但有一个very good documentation可以提供帮助。

我们没有使用粘性会话,因为每个请求都包含大量处理。根据我们所做的测试和请求的性质,对我们来说,最好是循环处理,而不是为特定的客户端会话重新点击同一个服务器。此外,由于没有启用粘性会话,我们使用同步复制来确保所有节点在将响应传递到客户端之前接收完整会话(它仅阻止该单个请求,因此不必担心)。我们没有在会话中存储大量对象(只是一些基本信息),所以我们没有问题,默认情况下会话被复制到所有节点。但是,如果您将其视为瓶颈,则可以优化配置,将某些节点子集放入群集中。