【问题标题】:Load balancing in Spring boot micro services hosted on Kubernetes托管在 Kubernetes 上的 Spring Boot 微服务中的负载均衡
【发布时间】:2019-01-22 15:19:29
【问题描述】:

上下文

使用 SpringBoot 和 REST API/微服务构建基于微服务的架构。该应用程序将使用 Docker 进行容器化,然后将部署在 Google Cloud Platform Kubernetes 服务上。考虑将 Nextflix ZUUL 用于 API Gateway 以解决身份验证/授权 (OAuth2)、服务发现 (Eureka) 和 Compose 等跨领域问题。

查询

由于应用程序将托管在 Kubernetes 上,问题是应该使用哪种负载均衡? 根据我有限的知识,有两种选择: 1) 丝带 2) Kubernetes 服务 3)以上两者的结合

如果能获得一些指示、最佳实践等以提出最佳解决方案,那将是非常有帮助的。请告知我是否需要其他信息。

谢谢!

【问题讨论】:

  • 你可能想看看stackoverflow.com/questions/51482499/… 我认为它不能完全回答你的问题,但它可能会有所帮助
  • 感谢@RyanDawson,这当然很有帮助!我正在检查您回复中的链接。

标签: spring-boot load-balancing microservices netflix-zuul google-kubernetes-engine


【解决方案1】:

随着项目的发展,寻找最佳解决方案通常是一个不断变化的目标,但我可以分享一些需要注意的要点。正如您所建议的,如果您的服务都在 Kubernetes 内部并且有一个ClusterIP then they will be automatically load-balanced'Headless' services or external services, from outside the cluster,不会。因此,如果您有这些,那么您可以考虑使用 Ribbon 在服务内部进行负载平衡。如果您决定反对 eureka,则有一个使用 kubernetes for discovery 的实现。 Ribbon 具有使用 hystrix 的优势,因此您可以在负载平衡之外进行速率限制。

kubernetes 生态系统中还提供了更复杂的选项。您可以拥有LoadBalancer or use Ingress 类型的服务,但这些服务往往用于外部暴露,而我认为您的问题更多是关于服务到服务的通信。解决这些问题的另一种方法是使用服务网格,而 Istio 在 Kubernetes 领域获得了很多关注。您可以使用它来处理服务到服务load-balancingrate-limiting 以及provide a gateway/s

使用 kubernetes-native 方法或网格将具有以语言中立的方式执行此操作的优势。如果您的服务中需要 Ribbon/hystrix,然后想要添加基于 python 的服务,您必须考虑如何获得一致的行为。

我建议您务必考虑您和您的团队认为最容易使用的内容。有很多选择和细微差别,了解它们是件好事,但您可能会发现自己不需要任何花哨的东西。

【讨论】:

    猜你喜欢
    • 2021-01-10
    • 2022-10-23
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 2022-01-24
    • 2016-06-23
    • 2017-01-10
    • 1970-01-01
    相关资源
    最近更新 更多