spring cloud zuul 简介及使用(二)

简介: Spring Cloud Zuul 是 Spring Cloud Netflix 子项目的核心组件之一,可以作为微服务架构中的 API 网关使用,支持动态路由与过滤功能

7 配置访问前缀

通过以下配置来给网关路径添加前缀,此处添加了/proxy前缀,这样我们需要访问http://localhost:8801/proxy/user-service/user/1才能访问到user-service中的接口。

微信图片_20220421225119.png

8 Header过滤及重定向添加Host

  • Zuul在请求路由时,默认会过滤掉一些敏感的头信息,以下配置可以防止路由时的Cookie及Authorization的丢失:

微信图片_20220421225123.png

  • Zuul在请求路由时,不会设置最初的host头信息,以下配置可以解决:

微信图片_20220421225126.png

9 查看路由信息

我们可以通过SpringBoot Actuator来查看Zuul中的路由信息。

a 在pom.xml中添加相关依赖:

微信图片_20220421225131.png

b 修改application.yaml配置文件,开启查看路由的端点:

微信图片_20220421225133.png

c 查看简单路由信息:

通过访问http://localhost:8801/actuator/routes查看简单路由信息:

微信图片_20220421225137.png

d 查看详细路由信息:

通过访问http://localhost:8801/actuator/routes/details查看详细路由信息:

微信图片_20220421225141.png

10 过滤器

  • 路由与过滤是Zuul的两大核心功能,
  • 路由功能负责将外部请求转发到具体的服务实例上去,是实现统一访问入口的基础,
  • 过滤功能负责对请求过程进行额外的处理,是请求校验过滤及服务聚合的基础。

a 过滤器类型

Zuul中有以下几种典型的过滤器类型。

  • pre:在请求被路由到目标服务前执行,比如权限校验、打印日志等功能;
  • routing:在请求被路由到目标服务时执行,这是使用Apache HttpClient或Netflix Ribbon构建和发送原始HTTP请求的地方;
  • post:在请求被路由到目标服务后执行,比如给目标服务的响应添加头信息,收集统计数据等功能;
  • error:请求在其他阶段发生错误时执行。

b 过滤器的生命周期

下图描述了一个HTTP请求到达API网关后,如何在各种不同类型的过滤器中流转的过程。

微信图片_20220421225146.png

c 自定义过滤器

c-1 添加PreLogFilter类继承ZuulFilter

这是一个前置过滤器,用于在请求路由到目标服务前打印请求日志。

微信图片_20220421225150.png

c-2  开启过滤器

微信图片_20220421225154.png

添加过滤器后,我们访问http://localhost:8801/user-service/user/1测试下,会打印如下日志。

微信图片_20220421225158.png

c-3 禁用过滤器

微信图片_20220421225201.png

c-4  核心过滤器

微信图片_20220421225206.png

11 Ribbon和Hystrix的支持

由于Zuul自动集成了Ribbon和Hystrix,所以Zuul天生就有负载均衡和服务容错能力,我们可以通过Ribbon和Hystrix的配置来配置Zuul中的相应功能。

  • 可以使用Hystrix的配置来设置路由转发时HystrixCommand的执行超时时间:

微信图片_20220421225209.png

  • 可以使用Ribbon的配置来设置路由转发时请求连接及处理的超时时间:

微信图片_20220421225213.png

12 常用配置

微信图片_20220421225217.png

使用到的模块

微信图片_20220421225221.png

项目源码地址

https://gitee.com/pingfanrenbiji/springcloud-learning

相关文章
|
4月前
|
监控 负载均衡 Java
深入理解Spring Cloud中的服务网关
深入理解Spring Cloud中的服务网关
|
4月前
|
设计模式 监控 Java
解析Spring Cloud中的断路器模式原理
解析Spring Cloud中的断路器模式原理
|
8天前
|
JavaScript NoSQL Java
CC-ADMIN后台简介一个基于 Spring Boot 2.1.3 、SpringBootMybatis plus、JWT、Shiro、Redis、Vue quasar 的前后端分离的后台管理系统
CC-ADMIN后台简介一个基于 Spring Boot 2.1.3 、SpringBootMybatis plus、JWT、Shiro、Redis、Vue quasar 的前后端分离的后台管理系统
25 0
|
2月前
|
XML 监控 Java
Spring Cloud全解析:熔断之Hystrix简介
Hystrix 是由 Netflix 开源的延迟和容错库,用于提高分布式系统的弹性。它通过断路器模式、资源隔离、服务降级及限流等机制防止服务雪崩。Hystrix 基于命令模式,通过 `HystrixCommand` 封装对外部依赖的调用逻辑。断路器能在依赖服务故障时快速返回备选响应,避免长时间等待。此外,Hystrix 还提供了监控功能,能够实时监控运行指标和配置变化。依赖管理方面,可通过 `@EnableHystrix` 启用 Hystrix 支持,并配置全局或局部的降级策略。结合 Feign 可实现客户端的服务降级。
153 23
|
2月前
|
负载均衡 Java 网络架构
实现微服务网关:Zuul与Spring Cloud Gateway的比较分析
实现微服务网关:Zuul与Spring Cloud Gateway的比较分析
91 5
|
4月前
|
资源调度 Java 调度
Spring Cloud Alibaba 集成分布式定时任务调度功能
Spring Cloud Alibaba 发布了 Scheduling 任务调度模块 [#3732]提供了一套开源、轻量级、高可用的定时任务解决方案,帮助您快速开发微服务体系下的分布式定时任务。
14906 29
|
4月前
|
负载均衡 Java Spring
Spring cloud gateway 如何在路由时进行负载均衡
Spring cloud gateway 如何在路由时进行负载均衡
475 15
|
4月前
|
Java Spring
spring cloud gateway在使用 zookeeper 注册中心时,配置https 进行服务转发
spring cloud gateway在使用 zookeeper 注册中心时,配置https 进行服务转发
109 3
|
4月前
|
消息中间件 Java 开发者
Spring Cloud微服务框架:构建高可用、分布式系统的现代架构
Spring Cloud是一个开源的微服务框架,旨在帮助开发者快速构建在分布式系统环境中运行的服务。它提供了一系列工具,用于在分布式系统中配置、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态等领域的支持。
181 5
下一篇
无影云桌面