我正在使用 Spring Cloud 创建微服务架构。
我正在使用 Spring Cloud 中的以下功能
- Zuul – 提供动态路由、监控、弹性、安全性等的 API 网关服务 -
- 功能区 – 客户端负载均衡器
- Feign – 声明式 REST 客户端
- Eureka – 服务注册和发现
- Sleuth – 通过日志进行分布式跟踪
- Zipkin – 具有请求可视化功能的分布式跟踪系统。
- Hystrix - 断路器、容错、适用于所有 API 的 Hystrix 仪表板
现在假设我有 100 个微服务,那么我们需要 100 个服务器来维护每个微服务。所以我想到使用 Kubernetes 通过将每个微服务部署在一个单独的 docker 容器中来解决这个问题,所以现在由于 Kubernetes 负责微服务健康检查、自动缩放、负载平衡,所以我需要再次使用 Ribbon、Eureka 和 Zuul。
谁能帮我解决这个问题
最佳答案
即使您使用 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 具有一些附加功能,例如 self 修复、自动缩放、滚动更新、计算资源管理、部署等。
关于java - Docker 容器中的微服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49880941/