我们的团队正在Eureka服务注册表中注册许多微服务。我们的微服务都没有互相交谈。我的团队对我们的最终客户应用程序印象深刻,他们可以使用服务发现来有效地查询我们的服务。 我很难解释这个团队,该服务注册表是由同一应用程序边界中的另一个微服务使用的,它可以发现哪个服务已启动并且可以正常运行,以便在进行查询之前可以发现并可能在自己的级别进行负载平衡。到另一个服务。
作为POC,我们在两个不同的区域中设置了Eureka服务器,并在两个区域中注册了一个微服务。我们还设置了群集模式,以便这些区域上的eureka服务器可以复制其注册表
问题是 a)当我们的微服务都不互相通信时,转到服务注册表路由是否有用? b)当客户端应用程序可能在不同区域中运行,用不同语言编写并且可能由其他团队拥有时,它们的客户端应用程序甚至如何知道在注册表中注册的那些服务?他们只是在使用我们的REST API。 我了解这更多是指导性问题,而不是解决特定问题。但是,我感谢您提供的任何见解,以便在对Eureka服务注册表有任何误解的情况下纠正自己。
答案 0 :(得分:0)
您应该使用API网关,例如Netflix Zuul,Spring Cloud Gateway或任何其他框架。 这样,您可以避免客户端与您的服务发现进行交互。
这也使服务发现有用,因为API网关需要它将目标微服务位置转发给传入的请求。
请记住,微服务体系结构使您能够轻松地增加某个微服务的可用实例数。 API网关使用服务发现来了解微服务的位置,并通过所有可用实例(通常使用功能区或其他客户端负载平衡器框架)进行负载平衡。
API网关提供其他功能,例如:
有关更多信息,请访问以下有关一般微服务的网站:https://microservices.io/
此网站还包含有关API网关模式的信息:https://microservices.io/patterns/apigateway.html