服务发现,负载平衡和连接池方法

时间:2015-02-05 09:03:45

标签: load-balancing connection-pooling soa microservices

在为像AWS这样部署在云上的大型系统使用SOA时,有两种方法可用于服务交互。

  1. 将每个服务群集放在内部elb后面。客户端使用相应的elb建立连接池,elb进行循环平衡。

  2. 采用netflix eureka等服务发现方式。

  3. 目前我们正在使用第一种方法,其中每个服务集群都在内部elb之后,客户端通过elbs进行通信,因此每个客户端实例只需维护1个池,即使用elb端点。

    我对第二次投诉有疑问。

    1. 移动到服务发现和智能客户端架构有什么好处,其中服务客户端知道所有服务实例(通过尤里卡服务或等效服务)并进行内部负载平衡?
    2. 在上述情况下,连接池如何工作?目前,每个客户端实例必须保持恰好1个连接池,即与相应的服务elb。但是对于富客户端,每个客户端都会将所有服务实例端点直接与之通信。在每个请求上建立连接效率不高,并且每个客户端都有这么多连接池(每个服务实例1个),我觉得这样做太过分了。
    3. 需要对上述两个问题提出意见或建议。

1 个答案:

答案 0 :(得分:0)

第一个问题。

是的。首先,您可以执行更好的故障恢复 - 例如,重试失败的请求到另一个节点而不向客户端显示任何错误。接下来,您可以比ELB提供更好的平衡。接下来,您可以自动向/从群集添加/删除节点,而无需更改ELB配置。如果您的节点具有健康检查,这非常有用。更重要的是,软件平衡器可以快速完成此任务。

第二个问题。

每个节点都有连接池。即 [客户端代码中的api方法] - > [软件平衡器] - > [节点连接池] - > [节点连接] - > [使用此连接发出请求]