最终客户如何发现在Eureka服务注册表中注册的服务?

时间:2019-08-07 17:37:59

标签: spring-boot microservices spring-cloud netflix-eureka

我们的团队正在Eureka服务注册表中注册许多微服务。我们的微服务都没有互相交谈。我的团队对我们的最终客户应用程序印象深刻,他们可以使用服务发现来有效地查询我们的服务。 我很难解释这个团队,该服务注册表是由同一应用程序边界中的另一个微服务使用的,它可以发现哪个服务已启动并且可以正常运行,以便在进行查询之前可以发现并可能在自己的级别进行负载平衡。到另一个服务。

作为POC,我们在两个不同的区域中设置了Eureka服务器,并在两个区域中注册了一个微服务。我们还设置了群集模式,以便这些区域上的eureka服务器可以复制其注册表

问题是 a)当我们的微服务都不互相通信时,转到服务注册表路由是否有用? b)当客户端应用程序可能在不同区域中运行,用不同语言编写并且可能由其他团队拥有时,它们的客户端应用程序甚至如何知道在注册表中注册的那些服务?他们只是在使用我们的REST API。 我了解这更多是指导性问题,而不是解决特定问题。但是,我感谢您提供的任何见解,以便在对Eureka服务注册表有任何误解的情况下纠正自己。

1 个答案:

答案 0 :(得分:0)

您应该使用API​​网关,例如Netflix Zuul,Spring Cloud Gateway或任何其他框架。 这样,您可以避免客户端与您的服务发现进行交互。

这也使服务发现有用,因为API网关需要它将目标微服务位置转发给传入的请求。

请记住,微服务体系结构使您能够轻松地增加某个微服务的可用实例数。 API网关使用服务发现来了解微服务的位置,并通过所有可用实例(通常使用功能区或其他客户端负载平衡器框架)进行负载平衡。

API网关提供其他功能,例如:

  • 让您的客户仅与几个微服务进行交互,而不是让他们知道您所有的微服务注册中心
  • 设置一些限速规则,以使您的客户端不会溢出系统
  • 如果需要,他们可以在将请求转发到微服务之前(或在接收响应之后)转换客户端请求。例如,您可以让客户端以微服务未准备好的其他格式发送请求。
  • 您可以为不同的客户端使用不同的API网关

有关更多信息,请访问以下有关一般微服务的网站:https://microservices.io/

此网站还包含有关API网关模式的信息:https://microservices.io/patterns/apigateway.html