📜  Zuul API网关

📅  最后修改于: 2021-01-11 02:32:44             🧑  作者: Mango

Zuul API网关

什么是祖尔?

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

Zuul旨在实现动态路由,监视,弹性安全性。它还可以将请求路由到多个Amazon Auto Scaling组

例如, / api / products映射到产品服务, / api / 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:这是一个向Zuul添加其他NetflixOSS组件的库。
  • 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:提供群组名称。我们提供了com.javatpoint.microservices。

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

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

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

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

步骤7:在STS IDE中导入项目。

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

导入需要一些时间。

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

NetflixZuulApiGatewayServerApplication.java

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