什么时候配置zuul路由
When to configure zuul routes
我是 spring 云的新手,正在浏览一些示例和 material 在线获取的内容以使自己感到舒服。然而,在阅读 ZUUL 时,一些网站在 ZUUL 的 application.yml
中配置了路由,而其他一些网站提到请求将被转发到相应的微服务,无需显式配置路由。我有点困惑。例如,在下面的场景中,配置路由或让 zuul 自动路由的方法是什么?
- 假设我有几个微服务 运行 并且所有这些服务连同 ZUUL 都已注册到 Eureka。
- 我有一个前端 运行 在同一台服务器的不同端口上,需要与上述微服务进行交互。
- 我还有一些其他应用程序(运行 完全在不同的服务器上)需要与上述微服务交互以获取数据。
TIA..
您是否使用 Zuul(通过 Eureka 知道微服务地址)在您的 micro-services 之间转发请求?如果是这样,您正在使用 Server-Side 负载平衡模式。
如果您使用发现服务(在您的情况下为 Eureka),我认为最好的方法是对所有 inter-services 请求(在您的系统内)使用 Client-Side 负载平衡模式。 (你可以为此使用 Ribbon 或 RestTemplate)。
您可以使用 Zuul 作为系统的统一前门,它允许浏览器、移动应用程序或其他用户界面使用来自多个主机的服务,而无需管理 cross-origin 资源共享 (CORS) 和身份验证每一个。
例如:客户端(移动应用)请求所有图片评论。客户端不需要知道 Comments-service 地址。只需要代理地址,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 寻找 service-id。你使用路线作为
zuul.routes.currencyprovider.path=/currencies/**
zuul.routes.currencyprovider.url=https://currencies.net/
通过这条路线,来自您的服务 THROUGH Zuul 的所有 /currencies/**
请求都将完成。
使用这种方法,您的所有系统都有一扇门。这是API Gateway pattern。
有时您的系统需要聚合来自不同服务的多个结果以响应客户端请求。您可以在 Proxy 中执行此操作(在您的情况下为 Zuul)。
我是 spring 云的新手,正在浏览一些示例和 material 在线获取的内容以使自己感到舒服。然而,在阅读 ZUUL 时,一些网站在 ZUUL 的 application.yml
中配置了路由,而其他一些网站提到请求将被转发到相应的微服务,无需显式配置路由。我有点困惑。例如,在下面的场景中,配置路由或让 zuul 自动路由的方法是什么?
- 假设我有几个微服务 运行 并且所有这些服务连同 ZUUL 都已注册到 Eureka。
- 我有一个前端 运行 在同一台服务器的不同端口上,需要与上述微服务进行交互。
- 我还有一些其他应用程序(运行 完全在不同的服务器上)需要与上述微服务交互以获取数据。
TIA..
您是否使用 Zuul(通过 Eureka 知道微服务地址)在您的 micro-services 之间转发请求?如果是这样,您正在使用 Server-Side 负载平衡模式。
如果您使用发现服务(在您的情况下为 Eureka),我认为最好的方法是对所有 inter-services 请求(在您的系统内)使用 Client-Side 负载平衡模式。 (你可以为此使用 Ribbon 或 RestTemplate)。
您可以使用 Zuul 作为系统的统一前门,它允许浏览器、移动应用程序或其他用户界面使用来自多个主机的服务,而无需管理 cross-origin 资源共享 (CORS) 和身份验证每一个。
例如:客户端(移动应用)请求所有图片评论。客户端不需要知道 Comments-service 地址。只需要代理地址,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 寻找 service-id。你使用路线作为
zuul.routes.currencyprovider.path=/currencies/**
zuul.routes.currencyprovider.url=https://currencies.net/
通过这条路线,来自您的服务 THROUGH Zuul 的所有 /currencies/**
请求都将完成。
使用这种方法,您的所有系统都有一扇门。这是API Gateway pattern。
有时您的系统需要聚合来自不同服务的多个结果以响应客户端请求。您可以在 Proxy 中执行此操作(在您的情况下为 Zuul)。