Spring cloud网关,spring cloud zuul作用,详解Spring Cloud Zuul 服务网关

Spring cloud网关,spring cloud zuul作用,详解Spring Cloud Zuul 服务网关

本文主要介绍Spring Cloud Zuul服务网关的详细说明。边肖认为这很好。现在分享给大家,给大家一个参考。来和边肖一起看看吧。

有了Eureka服务注册发现、Hystrix断路器、Ribbon服务调用负载平衡和spring cloud config集群配置中心,看起来一个微服务框架是完整的最后但同样重要的是服务网关是不可或缺的。

云Zuul路由是微服务架构不可或缺的一部分,提供动态路由、监控、灵活性、安全性等边缘服务。Zuul是网飞生产的基于JVM路由和服务器的负载均衡器。

Zuul介绍

Zuul在整个Spring云微服务框架中扮演着“智能网关”的角色。一方面,Zuul是一个接入网关,起到反向代理的作用,是外部消费者请求内部服务的唯一入口。另一方面,Zuul还具有过滤功能,通过运行时注入过滤规则,可以实现用户认证、动态路由、灰度发布、A/B测试、负载限流等功能。

Zuul的大部分功能都是通过过滤来完成的。Zuul可以提供四种标准类型的过滤,如下图所示:

1) Pre:过滤规则在路由之前起作用。你可以使用“预”过滤器来实现用户认证,记录请求日志等。

2)路由:过滤规则在路由过程中生效。可以使用“路由”滤镜实现动态路由、灰度发布、A/B测试、负载限流等。

3) Post:路由后过滤规则生效。可以使用‘Post’过滤器收集统计数据和指标,将相应的微服务编写成Http响应返回给服务消费者;

4)错误:过滤规则路由过程中发生错误时生效。错误过滤器可用于记录错误日志,并可对错误进行第二次处理。

使用RequestContext在过滤器之间传递消息。存储在RequestContext中的内容包括路由目的地地址、错误信息、请求信息、响应信息等。Zuul的过滤规则也可以用基于JVM的语言编写,包括Java、Python、Groovy等。

一、Zuul 实例

在前一个演示中建立注册中心和服务提供者的基础上,让我们演示zuul网关服务。

1.创建网关类

@EnableZuulProxy

@SpringCloudApplication

//整合@ SpringbootaApplication、@EnableDiscoveryClient、@EnableCircuitBreaker

公共类zu应用程序{

公共静态void main(String[] args) {

新建SpringApplicationBuilder(zuulapplication . class)。web(真)。run(args);

}

}

2.添加属性配置文件

spring.application.name=api网关

server.port=5555

zuul . routes . API-a . path=/API-a/* *

zuul . routes . API-a . service id=compute-service

zuul . routes . API-b . path=/API-b/* *

zuul . routes . API-b . service id=compute-service

eureka . client . service URL . default zone=http://localhost:1111/eureka/

它还指向eureka服务注册中心的地址,API-a.serviceid和b-serviceid指向服务提供者的名称。

3.访问效应

原来直接通过http://COMPUTE-SERVICE/add/add?A=10b=20 link直接访问compute-service服务实例,现在可以直接localhost: 5555/API-a/add?A=1b=2访问计算服务服务的网关地址。同样,zuul gateway也提供服务负载均衡功能,将所有请求发送到服务服务实例。

二、什么是网关?为何需要使用网关?

如上图所示,外部提供的服务的API接口直接暴露给服务调用方,没有网关。当调用者增多时,不同的业务调用者是不同的,需要添加定制的访问权限、验证等逻辑。当添加API网关时,在第三方调用者和服务提供者之间创建了一堵墙。这堵墙直接和调用者通信进行权限控制,然后均衡的把请求分发到后台服务器,就像不需要直接访问compute-service的add方法,而是通过api-a/add链接把请求传递给服务实例一样。Zuul就是这样一个API网关,提供负载平衡-反向代理-权威认证。

类似于Nginx在应用服务前端加一道保护墙,zuul的负载均衡是为了将请求分发到集群中的一个服务或者一个服务实例。前面介绍的Ribbon也是主要的服务加载功能,它针对的是服务消费者将调用请求分发到特定的服务提供实例。两者都做负载均衡,实际上是在系统的不同层面进行的。

这就是本文的全部内容。希望对大家的学习有帮助,支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: