像功能区这样的客户端负载均衡器是如何工作的?

How does client side load balancer like ribbon works?

我正在尝试了解客户端负载平衡的工作原理。到目前为止,我已经能够理解以下内容。

  1. 没有集中式负载均衡器。
  2. 负载均衡器现在驻留在服务本身。
  3. 这些负载均衡器了解所有服务实例(它们的 ip 端口等)通过服务发现。
  4. 根据负载平衡算法,他们可以转发 对这些实例的请求。

我不明白的是: 客户端如何发出请求,在传统的负载均衡器中,用户可以使用负载均衡器的 dns 名称发出请求,但是在客户端负载均衡中如何进行,尤其是在实例来来去去的云环境中。

这里的关键字是服务发现

您需要有一个中央登记簿,其中列出了您的所有服务实例(如果它们由于某种原因出现故障则不列出)。然后,您的客户端负载平衡器可以要求注册服务实例的 URL 和 select 其中之一。

执行此操作的工具是 Eureka,例如。