百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

Spring Cloud Gateway核心概念和工作原理-Part 1

ztj100 2024-10-29 18:18 28 浏览 0 评论

一、Spring Cloud Gateway 概述

Spring Cloud Gateway是Spring官方基于Spring 5.0,Spring Boot 2.0和Project Reactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供一种简单而有效的统一的API路由管理方式。Spring Cloud Gateway作为Spring Cloud生态系中的网关,目标是替代Netflix ZUUL,其不仅提供统一的路由方式,并且基于Filter链的方式提供了网关基本的功能,例如:安全,监控/埋点,和限流等。



二、Spring Cloud Gateway的特征

  • Java 8
  • Spring Framework 5
  • Spring Boot 2
  • 动态路由
  • 内置到Spring Handler映射中的路由匹配
  • 基于HTTP请求的路由匹配 (Path, Method, Header, Host, etc…)
  • 过滤器作用于匹配的路由
  • 过滤器可以修改下游HTTP请求和HTTP响应 (Add/Remove Headers, Add/Remove Parameters, Rewrite Path, Set Path, Hystrix, etc…)
  • 通过API或配置驱动
  • 支持Spring Cloud DiscoveryClient配置路由,与服务发现与注册配合使用


三、Spring Cloud Gateway核心概念

使用过Zuul的人,都知道网关的核心肯定是Filter以及Filter Chain(Filter 责任链)。Spring Cloud Gateway也具有路由和Filter的概念。下面介绍一下Spring Cloud Gateway中的几个重要概念。

  • Route(路由): 路由是网关的基本组件。它的定义是一个ID,一个目标URI,一组谓词和一组过滤器。如果聚合谓词为真,则匹配路由。
  • Predicate(谓词): 这是一个 Java 8 Function Predicate。输入类型是一个 Spring Framework ServerWebExchange。这允许开发人员对HTTP请求中的任何内容进行匹配,例如头和参数。
  • Filter(过滤器): 一个标准的Spring webFilter。Spring Cloud Gateway中的Filter分为两种类型的Filter,分别是Gateway Filter和Global Filter。在这里,可以在发送下游请求之前或之后修改请求和响应。


四、Spring Cloud Gateway的工作原理

Spring Cloud Gateway 核心处理流程如下所示。

Gateway的客户端向Spring Cloud Gateway发起请求,请求首先会被 Gateway Handler Mapping 接收,决定请求匹配的路由,然后发送给Gateway Web Handler。Handler 通过特定的请求filter链发送请求。

过滤链通过虚线分隔的原因是过滤器filter可以在代理请求发送之前或者之后执行逻辑。执行所有 pre 过滤逻辑,然后发出请求给代理服务(proxied service),之后将执行 post 过滤器逻辑。



五、Spring Cloud Gateway相关依赖项

将如下依赖项添加到Spring Cloud项目的pom.xml文件中。

<dependencies>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-actuator</artifactId>

</dependency>

<!--Spring Cloud Gateway的Starter-->

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-gateway</artifactId>

</dependency>

</dependencies>


Spring Cloud Gateway提供了一个gateway actuator,该EndPoint 提供了关于Filter和Routes的信息查询。可以在application.yml 中配置开启。

访问gateway 端点:

http://localhost:8080/actuator/gateway/routes

可以看到返回的路由信息:



六、Spring Cloud Gateway网关路由方式

新的gateway网关路由配置有两种方式:

1.通过@Bean自定义RouteLocator,在启动主类Application中配置。


2.在配置文件yml中配置。


这两种方式都可以实现网关路由是等价的,但是通常项目开发中会使用配置文件yml方式。

相关推荐

Python 操作excel的坑__真实的行和列

大佬给的建议__如何快速处理excelopenpyxl库操作excel的时候,单个表的数据量大一些处理速度还能接受,如果涉及多个表甚至多个excel文件的时候速度会很慢,还是建议用pandas来处理,...

Python os.path模块使用指南:轻松处理文件路径

前言在Python编程中,文件和目录的操作是非常重要的一部分。为了方便用户进行文件和目录的操作,Python标准库提供了os模块。其中,os.path子模块提供了一些处理文件路径的函数和方法。本文主要...

Python常用内置模块介绍——文件与系统操作详解

Python提供了多个强大的内置模块用于文件和系统操作,下面我将详细介绍最常用的几个模块及其核心功能。1.os模块-操作系统交互...

Python Flask 建站框架实操教程(flask框架网页)

下面我将带您从零开始构建一个完整的Flask网站,包含用户认证、数据库操作和前端模板等核心功能。##第一部分:基础项目搭建###1.创建项目环境```bash...

为你的python程序上锁:软件序列号生成器

序列号很多同学可能开发了非常多的程序了,并且进行了...

PO设计模式全攻略,在 UI 自动化中的实践总结(以企业微信为例)

一、什么是PO设计模式?PO(PageObject)设计模式将某个页面的所有元素对象定位和对元素对象的操作封装成一个Page类,即一个py文件,并以页面为单位来写测试用例,实现页面对象和测试用例的...

这种小工具居然也能在某鱼卖钱?我用Python一天能写...

前两天在某鱼闲逛,本来想找个二手机械键盘,结果刷着刷着突然看到有人在卖——Word批量转PDF小工具...

python打包成exe,程序有图标,但是任务栏和窗口都没有显示图标

代码中指定图标信息#设置应用ID,确保任务栏图标正确显示ifsys.platform=="win32":importctypesapp_id=...

使用Python构建电影推荐系统(用python做推荐系统)

在日常数据挖掘工作中,除了会涉及到使用Python处理分类或预测任务,有时候还会涉及推荐系统相关任务。...

python爬取并分析淘宝商品信息(python爬取淘宝商品数据)

python爬取并分析淘宝商品信息背景介绍一、模拟登陆二、爬取商品信息1.定义相关参数2.分析并定义正则3.数据爬取三、简单数据分析1.导入库2.中文显示3.读取数据4.分析价格分布5.分析销售...

OpenCV入门学习基础教程(从小白变大神)

Opencv是用于快速处理图像处理、计算机视觉问题的工具,支持多种语言进行开发如c++、python、java等,下面这篇文章主要给大家介绍了关于openCV入门学习基础教程的相关资料,需要的朋友可以...

python图像处理-一行代码实现灰度图抠图

抠图是ps的最基本技能,利用python可以实现用一行代码实现灰度图抠图。基础算法是...

从头开始学python:如何用Matplotlib绘图表

Matplotlib是一个用于绘制图表的库。如果你有用过python处理数据,那Matplotlib可以更直观的帮你把数据展示出来。直接上代码看例子:importmatplotlib.pyplot...

Python爬取爱奇艺腾讯视频 250,000 条数据分析为什么李诞不值得了

在《Python爬取爱奇艺52432条数据分析谁才是《奇葩说》的焦点人物?》这篇文章中,我们从爱奇艺爬取了5万多条评论数据,并对一些关键数据进行了分析,由此总结出了一些明面上看不到的数据,并...

Python Matplotlib 库使用基本指南

简介Matplotlib是一个广泛使用的Python数据可视化库,它可以创建各种类型的图表、图形和可视化效果。无论是简单的折线图还是复杂的热力图,Matplotlib提供了丰富的功能来满足我们...

取消回复欢迎 发表评论: