3

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

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

我没有找到任何文档,如果它是一种可能的配置,并且如果两个应用程序(假设它是两个 tomcat 一开始)可以干扰。

更新

在使用 Camel 三年后,它似乎在某些情况下得到了很好的管理:“JMS”和 Web 服务,负载平衡在这些情况下运行良好,但在“JMS”的情况下,如果出现以下情况,我们会松散消息的顺序我们不使用标题JMSXGroupID

然而,对于从文件(或 FTP、sFTP、FTPS)消费的服务,这个问题仍然存在。目前我们只激活一条腿来从这个来源消费,万一这条腿坏了,不幸的是,在第二条腿中没有自动开始使用 FTP 文件的路线。

4

1 回答 1

1

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

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

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

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

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

于 2013-06-29T22:09:52.623 回答