SpringCloud Zuul API网关
什么是Zuul?
Zuul Server是API网关应用程序。它处理所有请求并执行微服务应用程序的动态路由。它充当所有请求的前门。它也称为 边缘服务器。
Zuul旨在实现 动态路由,监视,弹性,和 安全性。它还可以将请求路由到多个 Amazon Auto Scaling组。
例如, /api/products 映射到 产品服务和 /api/user 映射到 user 服务。 Zuul服务器将请求动态路由到相应的后端应用程序。
为什么使用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.aizws.microservices。
步骤3: 提供 Artifact id,我们提供了 netflix-zuul-api-gateway-server。
步骤4: 添加以下依赖项: Zuul,Eureka Discovery,Actuator 和 DevTools。
步骤5: 单击 Generate (生成)按钮。它将开始将项目打包到 zip 文件中并下载。
步骤6: 提取压缩文件并将其粘贴到Spring Tool Suite的工作区中。
步骤7: 导入项目
文件->导入->现有Maven项目->浏览->选择 netflix-zuul-api-gateway-server ->选择文件夹->完成
导入需要一些时间。
步骤8: 打开 NetflixZuulApiGatewayServerApplication.java 文件并启用zuul代理和发现分别使用 @EnableZuulProxy 和 @EnableDiscoveryClient 。
NetflixZuulApiGatewayServerApplication.java
package com.aizws.microservices.netflixzuulapigatewayserver; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.netflix.zuul.EnableZuulProxy; @EnableZuulProxy @EnableDiscoveryClient @SpringBootApplication public class NetflixZuulApiGatewayServerApplication { public static void main(String[] args) { SpringApplication.run(NetflixZuulApiGatewayServerApplication.class, args); } }
步骤9: 打开 application.properties 文件,并配置 应用程序名称,端口,和 eureka命名服务器。
application.properties
spring.application.name=netflix-zuul-api-gateway-server server.port=8765 eureka.client.service-url.default-zone=http://localhost:8765/eureka
下一章:SpringCloud 日志过滤
在上一节中,我们讨论了在API网关中实现的常见功能。我们已经准备好充当API网关的Zuul服务器。在本节中,我们将在Zuul API Gateway中实现日志记录功能。让我们在Zuul API中 ...