何时配置zuul路由

时间:2017-02-14 23:48:21

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

我是初学云,并通过网上的一些示例和材料让自己感到舒服。然而,在阅读ZUUL时,一些站点在ZUUL的application.yml中配置了路由,而其他一些站点则提到请求将被转发到相应的微服务,而无需显式配置路由。我有点困惑。例如,在下面的场景中,配置路由或自动让zuul路由是什么方法?

  1. 假设我运行的微服务很少,而且所有这些服务都与ZUUL一起注册到Eureka。
  2. 我有一个前端,它运行在同一台服务器上的不同端口上,需要与上述微服务进行交互。
  3. 我还有很少的其他应用程序(完全在不同服务器上运行),需要与上述微服务进行交互以获取数据。
  4. TIA ..

1 个答案:

答案 0 :(得分:7)

您是否使用Zuul(通过Eureka知道微服务地址)在您的微服务之间转发请求?如果是这种情况,则使用服务器端负载平衡模式。

如果您使用发现服务(在您的情况下是Eureka),我认为最好的方法是对所有服务间请求(在您的系统内)使用客户端负载平衡模式。 (你可以使用Ribbon或RestTemplate)。

您可以将Zuul用作系统的统一前门,这允许浏览器,移动应用或其他用户界面使用来自多个主机的服务,而无需管理每个主机的跨源资源共享(CORS)和身份验证。 / p>

例如:客户端(移动应用)请求所有图片评论。客户不需要知道评论服务地址。只需要代理地址,Zuul会将请求转发给正确的服务。您可以在application.yml/.properties

中执行此操作
zuul.routes.comments.path=/comments/**
zuul.routes.comments.service-id=comments

请求将为GET www.myproxy.mycompany.com/comments。不要忘记application.yml/.properties中的服务名称非常重要(spring.application.name)。它是Zuul路由中的service-id(在Eureka中使用相同的标识符)。

出于某种原因,您的系统需要请求外部服务(正如您在第3个注释中提到的那样)。在这种情况下,您的外部服务不是发现客户端,Zuul无法从Eureka中查找服务ID。你使用路线作为

zuul.routes.currencyprovider.path=/currencies/**
zuul.routes.currencyprovider.url=https://currencies.net/

使用此路线,您的服务 THROUGH Zuul的所有/currencies/**个请求都将完成。 通过这种方法,您的所有系统都有一扇门。这是API Gateway pattern

有时,您的系统需要聚合来自不同服务的多个结果以响应客户端请求。您可以在代理服务器中执行此操作(在您的情况下为Zuul)。