[英]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.