【发布时间】:2019-06-03 04:58:58
【问题描述】:
在server-side 负载平衡中,客户端调用中间服务器,然后由中间服务器决定调用实际服务器(或微服务)的哪个实例。
在client-side 负载平衡中,客户端也会调用中间服务器(API 网关 - 例如Zuul,配置有负载平衡器 - @例如 987654325@ 和 命名服务器 - 例如 Eureka),然后决定调用哪个微服务实例。
除非我们将 API 网关作为客户端的一部分,否则客户端仍然不知道它应该向其发送请求的确切服务器的 IP 地址。在我看来,这很像服务器端负载平衡。我有什么遗漏吗?
(将 API 网关作为客户端的一部分似乎很奇怪,因为它通常部署在与客户端不同的服务器上)
【问题讨论】:
-
这可能会有所帮助 - stackoverflow.com/questions/29730310/…
-
@SundararajGovindasamy 我仍然不清楚它的客户端是如何做出负载平衡决定的,当它明确地将 Ribbon 放置在 API 网关上时,它会这样做
-
您不必调用中间服务器。您可以使用
RestTEmplate并以负载平衡的方式使用它。你不需要/不需要 ZUUL。您可以直接在客户端中使用 Ribbon。在您的情况下,您模拟了服务器端负载平衡,而不是使用客户端负载平衡。 -
@M.Deinum 那么,就是说如果我们使用像Zuul这样的API网关,整个架构就不能再说是遵循客户端负载均衡了?
-
没错,除非您将您的 api-gateway 视为客户端,否则您可以说这是在进行客户端负载平衡(虽然有点牵强)。
标签: spring spring-boot microservices netflix-eureka spring-cloud-netflix