Zuul API 网关

2025 年 1 月 8 日 | 3 分钟阅读

什么是 Zuul?

Zuul Server 是一个 API 网关应用程序。 它处理所有请求并执行微服务应用程序的动态路由。 它充当所有请求的前门。 它也被称为 Edge Server(边缘服务器)。

Zuul 的构建是为了实现 动态路由,监控,弹性 安全性。 它还可以将请求路由到多个 Amazon Auto Scaling Groups(亚马逊自动伸缩组)

例如,/api/products 映射到 product 服务,而 /api/user 映射到 user 服务。 Zuul Server 将请求动态路由到相应的后端应用程序。

为什么要使用 Zuul?

Netflix API 流量的量和种类有时会导致快速且无警告地出现生产问题。 因此,我们需要一个系统,该系统使我们能够快速更改行为,以便对这些情况做出反应。

Zuul 提供了各种不同类型的 过滤器,这些过滤器使我们能够快速,灵活地将功能应用于边缘服务。 这些过滤器执行以下功能

  • 身份验证和安全性: 它为每个资源提供身份验证要求。
  • 洞察力和监控: 它跟踪有意义的数据和统计信息,从而使我们能够准确地了解生产情况。
  • 动态路由: 它根据需要将请求动态路由到不同的后端集群。
  • 压力测试: 它增加了到集群的流量,以测试性能。
  • 负载卸载: 它为每种类型的请求分配容量,并删除超出限制的请求。
  • 静态响应处理: 它直接在边缘构建一些响应,而不是将它们转发到内部集群。
  • 多区域弹性: 它跨 AWS 区域路由请求,以实现 ELB 使用的多样化。

Zuul 组件

Zuul 2.x 组件

  • zuul-core: 它是一个包含 Zuul 2.0 核心功能的库。
  • zuul-sample: 它是 Zuul 2.0 的示例驱动程序应用程序。

Zuul 1.x 组件

  • zuul-core: 它定义了核心功能。
  • zuul-simple-webapp: 一个 Web 应用程序,显示了如何使用 zuul-core 构建应用程序的简单示例。
  • zuul-netflix: 它是一个将其他 NetflixOSS 组件添加到 Zuul 的库。
  • zuul-netflix-webapp: 它是一个将 zuul-core 和 zuul-netflix 打包在一起的 webapp。

设置 Zuul API 网关服务器

设置 Zuul API 网关有 三个 步骤

  • 为 Zuul API 网关创建一个组件
  • 确定 Zuul API 网关应执行的操作
  • 配置所有重要的请求以通过 Zuul API 网关传递

按照以下步骤设置 Zuul API 网关服务器。

步骤 1: 打开 Spring Initializr https://start.spring.io。

步骤 2: 提供 Group(组) 名称。 我们提供了 com.javatpoint.microservices.

步骤 3: 提供 Artifact(工件)。 我们提供了 netflix-zuul-api-gateway-server.

步骤 4: 添加以下依赖项: Zuul,Eureka Discovery,Actuator DevTools.

Zuul API Gateway

步骤 5: 单击 Generate(生成) 按钮。 它开始将项目打包到 zip 文件中并下载它。

Zuul API Gateway

步骤 6:Extract(提取) zip 文件并将其粘贴到 Spring Tool Suite 的工作区中。

步骤 7:Import(导入) 项目到 STS IDE 中。

File -> Import -> Existing Maven Projects -> Browse -> Select netflix-zuul-api-gateway-server -> Select Folder -> Finish

它需要一些时间来导入。

步骤 8: 打开 NetflixZuulApiGatewayServerApplication.java 文件,并通过使用注释 @EnableZuulProxy @EnableDiscoveryClient 分别启用 zuul 代理和发现客户端。

NetflixZuulApiGatewayServerApplication.java

步骤 9: 打开 application.properties 文件,并配置 application name(应用程序名称),port(端口)eureka naming server(eureka 命名服务器)

application.properties