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.codebaoku.microservices。

步骤3: 提供 Artifact id,我们提供了 netflix-zuul-api-gateway-server。

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

Zuul API网关

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

Zuul API Gateway

步骤6: 提取压缩文件并将其粘贴到Spring Tool Suite的工作区中。

步骤7: 导入项目

文件->导入->现有Maven项目->浏览->选择 netflix-zuul-api-gateway-server ->选择文件夹->完成

导入需要一些时间。

步骤8: 打开 NetflixZuulApiGatewayServerApplication.java 文件并启用zuul代理和发现分别使用 @EnableZuulProxy @EnableDiscoveryClient

NetflixZuulApiGatewayServerApplication.java

package com.codebaoku.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

 在上一节中,我们讨论了在API网关中实现的常见功能。我们已经准备好充当API网关的Zuul服务器。在本节中,我们将在Zuul API Gateway中实现日志记录功能。让我们在Zuul API中 ...