java - Docker 容器中的微服务

标签 java docker kubernetes microservices spring-cloud

我正在使用 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/

相关文章:

docker - Kubernetes-Kafka 无法在主题上写入消息

docker - 在脚本中运行时 curl 失败

php - 带有docker的PHP开发环境(以及如何使用composer)

node.js - 为什么我在 Kubernetes 上使用 Axios 时会出现 ENOTFOUND 错误

elasticsearch - Elasticsearch kubernetes 数据盘使用量突然上升

kubernetes - 是否可以在Google Compute Engine上为Kubernetes设置Stackdriver Monitoring?

java - keystore 更改后重新加载 SSLServerSocket,无需关闭并创建新套接字

java - java .properties 文件值中的换行符

java - Android UDP 示例代码问题

java - 如何在 JPanel 中移动图像