后端应用程序的多个实例之间的负载平衡

时间:2019-12-04 18:57:35

标签: java sockets apache-camel load-balancing legacy-app

我有一个基于Java的客户端应用程序,它希望使用“ some ”负载平衡策略与旧版后端应用程序的多个实例进行对话。该后端应用程序的实例详细信息(IP,PORT和Active?)存储在DB表中。对于给定的实例,客户端应用程序建立套接字连接,发送命令并接收响应。这些套接字连接是长期的。

为了能够利用所有可用实例,我计划在客户端中执行以下操作:

  1. 将健康实例读取到地图上
  2. 以循环方式打开连接或使用现有的Socket连接
  3. 在给定的套接字连接上发送请求。如果请求失败,则将该实例标记为不正常,以便 它不会再次被拾取。同时在另一个上重试该请求 连接
  4. 在工作线程中,定期从#1更新地图

是否有任何工具/库可以实现这一目标? Apache Camel出现在Google搜索中(还有Ribbon和Hystrix),但是我不确定如何在这种情况下适应它。请帮忙。

1 个答案:

答案 0 :(得分:0)

您在这里描述的是一个服务连接池

(我假设)您的旧系统需要自定义代码才能连接到旧后端,因此您需要自己编写连接代码,但是您可以查看是否可以利用此代码:

https://camel.apache.org/manual/latest/servicepool.html

您可以考虑编写自己的apache camel组件,在这种情况下(一旦编写了该组件),可以编写apache camel端点,例如direct(mylegacybackend:...),然后让该组件完成繁重的工作(服务连接池)为你。

这还取决于您的组件是生产者(推动)还是消费者(拉动)。

已阅读该链接,并查看它是否适合。祝你好运。