【问题标题】:Microservices in Docker ContainerDocker 容器中的微服务
【发布时间】:2018-09-27 14:06:47
【问题描述】:

我正在使用 Spring Cloud 来创建微服务架构。

我正在使用 Spring Cloud 中的以下功能

  • Zuul – API 网关服务,提供动态路由、监控、弹性、安全等 -
  • 功能区 - 客户端负载平衡器
  • Feign - 声明式 REST 客户端
  • Eureka – 服务注册和发现
  • Sleuth – 通过日志进行分布式跟踪
  • Zipkin - 具有请求可视化的分布式跟踪系统。
  • Hystrix - 适用于所有 API 的断路器、容错、Hystrix 仪表板

现在假设我有 100 个微服务,那么我们需要 100 台服务器来维护每个微服务。所以我想用 Kubernetes 来解决这个问题,通过将每个微服务部署在一个单独的 docker 容器中,所以现在既然 Kubernetes 负责微服务的健康检查、自动缩放、负载平衡,所以我需要再次使用 Ribbon、Eureka 和 Zuul。

谁能帮我解决这个问题

【问题讨论】:

    标签: java docker kubernetes microservices spring-cloud


    【解决方案1】:

    即使您使用 Spring Cloud,100 个服务并不意味着 100 个服务器。在 Spring Cloud 中,打包单元是 Spring Boot 应用程序,单个服务器可以托管许多这样的 Spring Boot 应用程序。如果需要,您可以将 Spring Boot 应用程序和其他 Spring Cloud 基础架构支持组件容器化。但这不是 Kubernetes。

    如果你迁移到 Kubernetes,你不需要像 Zuul、Ribbon 等基础设施支持服务,因为 Kubernetes 有自己的服务发现、网关、负载均衡器等组件。在 Kubernetes 中,打包单元是 Docker 镜像和一个或多个 Docker 容器可以放在一个 pod 中,这是最小的扩展单元。因此,Kubernetes 有一组不同的组件来管理微服务。

    Kubernetes 是不同于 Spring Cloud 的平台。两者都有相同的目标。然而,Kubernetes 有一些额外的功能,如自我修复、自动缩放、滚动更新、计算资源管理、部署等。

    【讨论】:

    • 感谢您的回复.....如果我不使用如何在一台机器上维护 100 个 Spring Boot 微服务。它会使机器变慢。如果我们有 100 个微服务并且不使用云基础设施,哪种方法对生产环境有利
    • 不一定只有一台机器,但也绝对不是100台机器。硬件选型是一个复杂的话题。只有通过负载测试才能形成良好的估计。托管 100 个微服务所需的服务器数量取决于:(1) 每台服务器的可用计算资源和内存,(2) 分配给每个服务的内存,(3) 高峰时段的最大预期流量。
    【解决方案2】:

    只是为了添加到 saptarshi basu 的回答中,您可能希望查看 https://dzone.com/articles/deploying-microservices-spring-cloud-vs-kubernetes,因为它会进行比较,并询问在 kubernetes 上使用 Spring cloud 时您可能希望由哪些组件处理哪些职责

    【讨论】:

      猜你喜欢
      • 2017-04-06
      • 2018-06-10
      • 2015-06-11
      • 2020-09-14
      • 2017-06-04
      • 2019-01-22
      • 1970-01-01
      • 2017-01-03
      • 2018-06-26
      相关资源
      最近更新 更多