我们计划使用Camel在某些外部系统(FTP,SOAP-WS,REST-WS,主题,队列等)之间进行集成。
我们可能会使用Spring配置(Camel上下文XML),并且由于信息量很大,因此我们计划将其部署到Tomcat集群中。
我没有找到任何文档,如果它可能的配置,以及两个应用程序(一开始说这是两个tomcat)都可以干扰。
更新
在使用Camel三年之后,在某些情况下似乎管理得很好:“ JMS”和Web服务,在这些情况下负载平衡效果很好,但是在“ JMS”的情况下,如果我们不使用标题JMSXGroupID
。
但是,对于从文件(或FTP,sFTP,FTPS)使用的服务仍然存在问题。目前,我们仅激活一个分支来从该源进行使用,并且如果该分支发生故障,很遗憾,第二个分支中没有自动开始路由以使用FTP文件。
最佳答案
只要您不写HTTP会话,就不必关心任何事情-只需在负载均衡器后面放置一些Tomcat节点即可。如果您写入HTTP会话,这仍然很简单,但是您可能已经(取决于所选的配置)配置了会话复制。
我一直在两个类似的系统集成项目中工作,它们在大量请求负载下工作。作为部署环境,我们选择了位于Apache服务器(通过AJP连接器进行通信)和BigIP负载平衡器(一段时间后,我们切换到Nginx)后面的群集Tomcat实例。
这两个应用程序均接受HTTP请求。其中一个是完全无状态的(类似于代理),另一个必须保留一些特定于会话的信息。对于后者,我们必须确保放入会话的所有对象都是可序列化的,并配置会话复制。
我们进行了许多测试,最终得到了经过战斗验证的DeltaManager,没有粘性会话和同步复制模式。根据系统体系结构,您需要仔细考虑这一点,但是有一个very good documentation可以提供帮助。
我们没有使用粘性会话,因为每个请求都需要完成大量的处理工作。根据我们所做的测试和请求的性质,对我们而言,最好是循环处理而不是针对特定的客户端会话再次遍历同一台服务器。同样由于没有启用粘性会话,我们使用同步复制来确保所有节点在响应传递给客户端之前都接收到完整的会话(它仅阻止单个请求,因此无后顾之忧)。我们没有在会话中存储巨大的对象(只是一些基本信息),因此,默认情况下将会话复制到所有节点没有任何问题。但是,如果您发现它是一个瓶颈,则可以优化配置,将节点的某些子集放入群集中。
关于apache-camel - Apache Camel和负载平衡,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17338791/