繁体   English   中英

微服务:无需使用 Spring API Gateway 进行服务发现

[英]Microservices : Without Service Discovery With Spring API Gateway

我在这方面过得很艰难。 我们想将我们的遗留应用程序移动到微服务应用程序(Spring-boot,Java 8)。

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

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

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

简短回答是的,您可以使用 Spring Cloud API Gateway 而没有 Service Discovery

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

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

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

一旦您开始觉得需要横向扩展,您就不会避免使用Service Registry 工具 如果您开始考虑选择哪一个,我建议您使用HashiCorp Consul

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

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

如果您可以选择,Kubernetes 是一个很好的平台。

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

您只需要制作一个云就绪的 docker 镜像(最好)并将其部署到 kubernetes,Kubernetes 将根据您的配置将内部端点映射到此,并且您的服务将注册到它(如果我用 spring-cloud和尤里卡服务器)。

如果没有 Service-Registry-backed 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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM