在为大型系统(如 AWS)部署 SOA 时,有两种方法可用于服务交互。
让每个服务集群都在内部 elb 后面。客户端与相应的 elb 建立连接池,并且 elb 进行循环平衡。
使用像 netflix eureka 这样的服务发现方法。
目前我们正在使用第一种方法,其中每个服务集群都位于内部 elb 后面,客户端通过 elb 进行通信,因此每个客户端实例只需维护 1 个池,即使用 elb 端点。
我对第二个方法有以下疑问。
- 转向服务发现和智能客户端架构是否有好处,其中服务客户端知道所有服务实例(通过 eureka 服务或等效服务)并进行内部负载平衡?
- 在上述情况下,连接池如何工作?目前,每个客户端实例必须准确维护 1 个连接池,即与相应服务的 elb。但是对于富客户端,每个客户端都将拥有所有可以直接通信的服务实例端点。在每个请求上建立连接效率不高,我猜每个客户端都有这么多连接池(每个服务实例 1 个)是一种矫枉过正的做法。
需要就上述两个问题提出意见/建议。