微服务:没有使用Spring API Gateway进行服务发现

时间:2019-12-29 04:13:25

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

我在这方面过得很艰难。我们希望将旧版应用程序迁移到微服务应用程序(Spring-boot,Java 8)。

根据架构师,我们不需要Service Disvovery,并且API Gateway足以完成Service Discovery和Routing。

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

我们能在没有服务发现的情况下使用Spring Cloud API Gateway生存吗?

3 个答案:

答案 0 :(得分:1)

一个简短的答案是的,您可以使用Spring Cloud API Gateway生存下来,而无需进行服务发现

但这实际上取决于应用程序的大小和要处理的流量

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

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

一旦开始感觉需要扩展,就不会避免使用服务注册表工具。如果您开始考虑选哪个,我建议您使用HashiCorp Consul

无论如何,最有可能您最终将不得不向基础结构注入服务发现机制。如果新架构对您有利,并且有计划进一步扩展它,则可以从一开始就做,或者稍后再进行处理。

如果您有迁移到云的计划,则可以预先考虑为基础架构配置 Kubernetes 。它为您提供了开箱即用的服务发现机制。

答案 1 :(得分:1)

Kubernetes是一个不错的平台,如果您愿意的话。

它可以处理从服务发现到部署的各个部分。

您只需要制作一个可用于云的docker映像(最好)并将其部署到kubernetes,Kubernetes将根据您的配置将内部端点映射到该端点,并且您的服务将被注册到该端点(如果我谈论的是spring-cloud和eureka服务器)。

答案 2 :(得分:0)

如果没有服务注册支持的 DiscoveryClient,那么您可以配置 spring.cloud.discovery.client.simple.instances.userservice[0].uri=http://s11:8080

您可以在 kubernetes 集群上托管此用户服务。有关更多详细信息,请参阅此文档 https://cloud.spring.io/spring-cloud-commons/2.2.x/reference/html/

在服务之间进行通信一样明智,假设用户服务想要通过功能区轻松配置密码服务进行通信

passwordservice.ribbon.listOfServers:${PASSWORDSERIVCE}:http://localhost:8081

我认为这种结构没有任何问题。