java - 微服务: Without Service Discovery With Spring API Gateway

标签 java spring-boot java-8 microservices spring-rest

我在这件事上经历了一段非常艰难的时期。我们希望将遗留应用程序迁移到微服务应用程序(Spring-boot、Java 8)。

根据架构师的说法,我们不需要服务发现,API 网关足以进行服务发现和路由。

请注意,目前部署是本地服务器,我们将拥有固定数量的节点,F5/负载均衡器将能够将请求路由到 API 网关,然后路由到微服务。

我们可以在没有服务发现的情况下依靠 Spring Cloud API Gateway 生存吗?

最佳答案

简短的回答是的,您可以使用 Spring Cloud API Gateway 而无需服务发现

但这实际上取决于应用程序的大小以及它将处理的流量

您可以开始迁移到微服务,无需服务发现。 对于内部服务到服务的通信,只需使用真实的硬编码 IP 地址和端口。

关于API网关进行服务发现。我可能是错的,但您将无法通过 Api 网关进行通信,因为它也不知道目标的位置(服务位置也必须进行硬编码)。

一旦您开始感觉需要横向扩展,您将无法避免使用服务注册表工具。如果您开始考虑选择哪一个,我建议您使用 HashiCorp Consul .

无论如何,您最终很可能必须将服务发现机制注入(inject)您的基础设施中。您可以从头开始做,也可以稍后再处理,如果新的架构对您有利并且会有进一步扩展的计划。

如果您有迁移到云的计划,那么您可以提前考虑为您的基础设施考虑 Kubernetes。它为您提供开箱即用的服务发现机制。

关于java - 微服务: Without Service Discovery With Spring API Gateway,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59516801/

相关文章:

java - 大量空/样板类(异常、事件)是否会显着影响 Android 性能/大小?

java - JSF 2.0 数据表中同一列中的不同组件

java - Spring 启动: Unit Test with Cassandra

java - 关于与另一个函数的参数具有相同类型和不同参数的 spring bean 的混淆

java - 发生异常时,ExecutorService runnable 从不点击尝试

java - 如何使用 java 8 Lambdas 和线程池实例化对象或调用 setter 以传递来自不同线程的值?

java - 使用流将列表的集合与单个值结合起来

java - 将缺少的 xml 属性解码到可选的 java 对象

java - 协助通用服务/dao 层

java - DAO 在 Spring JPA 中是一个好的实践吗?