我有一个java servlet应用程序(.war)。应用程序本身是无状态的,只进行计算。它通过REST API(使用Jersey 2实现)公开其功能。我正在使用多个实例在Cloud Foundry上部署应用程序,但结果是所有请求都转发到只有1个实例并且它始终是相同的。
该应用程序有一个路由,我可以使用X-CF-APP-INSTANCE标头向特定实例发送请求,但我希望我的实例能够平衡自己。
根据Cloud Foundry文档,gorouter在选择应该为请求提供服务的实例时应该使用循环策略。我是否遗漏了配置中的某些内容,或者有没有人遇到过这样的行为?
答案 0 :(得分:0)
两个应用程序之间的问题是使用Jersey的客户端和http连接池(PoolingHttpClientConnectionManager)。我在一开始就创建了一个Client对象作为Spring Bean,并将其配置为从池中获取空闲连接。从ClientConfig中删除池并使用新创建的Client对象导致请求被正确地负载平衡。