【Springcloud】详解Zuul(API网关)

在这里插入图片描述
今天我们说说Springcloud的另一个组件——Zuul。其就像一个城堡的大门,如果想进入城堡,必须经过它的“导航”和“过滤”。

Zuul是什么?

Zuul是API网关,存在于前端和后端之间,所有的前端请求访问都需要经过它来调度和过滤。它提供了路由、服务器负载均衡、安全等功能。
在这里插入图片描述

路由详解

路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础。路由配置分为传统路由配置和服务路由配置。今天我们只说说服务路由配置。

路由配置方式

zuul.routes.user-service=/user-service/**

路径匹配

为路由规则定义匹配表达式使用的是Ant风格,示例如下。

//拼接一个任务字符的路径
/user-service/?

//拼接任意字符的路径
/user-service/*

//拼接多级的任意字符路径
/user-service/**

路由前缀

路由前缀就是全局地为路由规则增加前缀信息,可使用zuul.prefix参数来进行设置。

zuul.prefix=/api

本地跳转

我们可实现forward形式的服务端跳转配置,比如以下实现了将符合/api-b/**规则的请求转发到API网关中以/local为前缀的请求上,由API网关进行本地处理。

zuul.routes.api-b.path=/api-b/**
zuul.toutes.api-b.url=forward:/local
过滤器详解

过滤器功能负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础。每一个进入Zuul的HTTP请求都会经过一系列的过滤器处理链得到请求响应,并返回给客户端。

请求生命周期

当一个HTTP请求到达API网关之后,如何在各种不同类型的过滤器之间流转呢?

(1)pre阶段
在这个阶段,请求会被pre类型的过滤器进行处理,做一些前置加工。这类过滤器包括请求的校验等。
(2)routing阶段
这是路由请求转发阶段,也就是将外部请求转发到具体服务实例上去的过程。当服务实例将请求结果都返回之后,此阶段完成。
(3)post阶段
在此阶段中,我们可以对处理结果进行一些加工或转换等
(4)error阶段
当前三个阶段发生异常时,才会触发这个error阶段。但是它最后也是流向post阶段,因为它需要通过post过滤器将最终结果返回给请求客户端。

禁用过滤器

比如我们想禁用AccessFilter过滤器,可在配置文件中添加如下配置:

zuul.AccessFilter.pre.disable=true
动态加载

动态加载就是在不重启服务的前提下,对其动态修改路由规则、添加或删除过滤器等。

动态路由

如果想实现动态刷新路由规则的功能,只需将API网关服务的配置文件通过Config连接的Git仓库存储和管理即可。

动态过滤器

如果想实现此功能,需要借助基于JVM实现的动态语言的帮助,比如Groovy。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡夫卡的熊kfk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值