springcloud Gateway网关

这篇具有很好参考价值的文章主要介绍了springcloud Gateway网关。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

代码下载地址

地址:https://github.com/13thm/study_springcloud/tree/main/days9_Gateway

概述简介

Gateway是在Spring生态系统之上构建的API网关服务,基于Spring 5,Spring Boot 2和 Project Reactor等技术。

Gateway旨在提供一种简单而有效的方式来对API进行路由,以及提供一些强大的过滤器功能, 例如:熔断、限流、重试等

pringCloud Gateway 是 Spring Cloud 的一个全新项目,基于 Spring 5.0+Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。
SpringCloud Gateway 作为 Spring Cloud 生态系统中的网关,目标是替代 Zuul,在Spring Cloud 2.0以上版本中,没有对新版本的Zuul 2.0以上最新高性能版本进行集成,仍然还是使用的Zuul 1.x非Reactor模式的老版本。而为了提升网关的性能,SpringCloud Gateway是基于WebFlux框架实现的,而WebFlux框架底层则使用了高性能的Reactor模式通信框架Netty。
Spring Cloud Gateway的目标提供统一的路由方式且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控/指标,和限流。

三大核心概念

Route(路由):路由是构建网关的基本模块,它由ID,目标URI,一系列的断言和过滤器组成,如果断言为true则匹配该路由
Predicate(断言):参考的是Java8的java.util.function.Predicate 开发人员可以匹配HTTP请求中的所有内容(例如请求头或请求参数),如果请求与断言相匹配则进行路由.
Filter(过滤): 指的是Spring框架中GatewayFilter的实例,使用过滤器,可以在请求被路由前或者之后对请求进行修改。

Gateway工作流程:路由转发+执行过滤器链

配置

  1. 新建Module:cloud-gateway-gateway9527
  2. 写POM
  3. 写yml
  4. 主启动类

测试

启动7001,启动8001,启动9527网关
添加网关前

http://localhost:8001/payment/get/1

springcloud Gateway网关,springcloud,spring cloud,gateway,java

添加网关后

http://localhost:9527/payment/get/1

springcloud Gateway网关,springcloud,spring cloud,gateway,java

可以配置类代替yml

http://news.baidu.com/guonei

用自己的网关访问百度新闻,百度国内新闻网址,需要外网
通过9527网关访问到外网的百度新闻网址
在9527项目 建立package config 写配置类(具体看下载代码)

当访问地址 http://localhost:9527/guonei时会自动转发到地址:http://news.baidu.com/guonei
springcloud Gateway网关,springcloud,spring cloud,gateway,java

动态路由

springcloud Gateway网关,springcloud,spring cloud,gateway,java
默认情况下Gateway会根据注册中心注册的服务列表,以注册中心上微服务名为路径创建动态路由进行转发,从而实现动态路由的功能.
**启动:**一个eureka7001 + 两个服务提供者8001/8002
修改9527项目的yml

springcloud Gateway网关,springcloud,spring cloud,gateway,java

测试

http://localhost:9527/payment/lb

springcloud Gateway网关,springcloud,spring cloud,gateway,java
springcloud Gateway网关,springcloud,spring cloud,gateway,java
完成了轮流切换

Predicate的使用

时间前后或者在时间之间设置.

  1. After Route Predicate
  2. Before Route Predicate
  3. Between Route Predicate
    举例:
    yml里面设置:
    springcloud Gateway网关,springcloud,spring cloud,gateway,java

Cookie Route Predicate (cookie设置)

- Cookie=username,java        # 断言设置cookie
Cookie Route Predicate需要两个参数,一个是 Cookie name ,一个是正则表达式。
路由规则会通过获取对应的 Cookie name 值和正则表达式去匹配,如果匹配上就会执行路由,如果没有匹配上则不执行

springcloud Gateway网关,springcloud,spring cloud,gateway,java
测试
不带cookie

curl http://localhost:9527/payment/lb

springcloud Gateway网关,springcloud,spring cloud,gateway,java

带上cookie

curl http://localhost:9527/payment/lb --cookie "username=java"

springcloud Gateway网关,springcloud,spring cloud,gateway,java

Header Route Predicate(请求头设置)
springcloud Gateway网关,springcloud,spring cloud,gateway,java

- Header=X-Request-Id, \d+  # 请求头要有X-Request-Id属性并且值为整数的正则表达式

测试:

curl http://localhost:9527/payment/lb -H "X-Request-Id:123"

springcloud Gateway网关,springcloud,spring cloud,gateway,java

curl http://localhost:9527/payment/lb -H "X-Request-Id:sss"

springcloud Gateway网关,springcloud,spring cloud,gateway,java

Host Route Predicate

Host=**.test.com

springcloud Gateway网关,springcloud,spring cloud,gateway,java
测试:
正确:curl http://localhost:9527/payment/lb -H "Host: java.test.com"
springcloud Gateway网关,springcloud,spring cloud,gateway,java

错误:curl http://localhost:9527/payment/lb -H "Host: java.test.net"
springcloud Gateway网关,springcloud,spring cloud,gateway,java

Method Route Predicate

- Method=GET

springcloud Gateway网关,springcloud,spring cloud,gateway,java
springcloud Gateway网关,springcloud,spring cloud,gateway,java

Path Route Predicate

Path=/payment/lb/**         # 断言,路径相匹配的进行路由

springcloud Gateway网关,springcloud,spring cloud,gateway,java

Query Route Predicate

- Query=username, \d+  # 要有参数名username并且值还要是整数才能路由

springcloud Gateway网关,springcloud,spring cloud,gateway,java
正确:curl http://localhost:9527/payment/lb?username=31

错误:curl http://localhost:9527/payment/lb?username=-31

Filter的使用

简介

路由过滤器可用于修改进入的HTTP请求和返回的HTTP响应,路由过滤器只能指定路由进行使用。

Spring Cloud Gateway 内置了多种路由过滤器,他们都由GatewayFilter的工厂类来产生
官网:https://docs.spring.io/spring-cloud-gateway/docs/3.0.8/reference/html/#gatewayfilter-factories

springcloud Gateway网关,springcloud,spring cloud,gateway,java
filter 过滤器看一下官网,写的比较多

自定义filter

建一个package filter 写过滤器(具体看下载代码)

正确的:
http://localhost:9527/payment/lb?uname=z3

springcloud Gateway网关,springcloud,spring cloud,gateway,java

错误的:
http://localhost:9527/payment/lb

springcloud Gateway网关,springcloud,spring cloud,gateway,java文章来源地址https://www.toymoban.com/news/detail-822025.html

到了这里,关于springcloud Gateway网关的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • spring cloud gateway网关(一)之网关路由

    1、gateway相关介绍 在微服务架构中,系统往往由多个微服务组成,而这些服务可能部署在不同机房、不同地区、不同域名下。这种情况下,客户端(例如浏览器、手机、软件工具等)想要直接请求这些服务,就需要知道它们具体的地址信息,例如 IP 地址、端口号等。这种客户

    2024年02月08日
    浏览(41)
  • Spring cloud教程Gateway服务网关

    写在前面的话: 本笔记在参考网上视频以及博客的基础上,只做个人学习笔记,如有侵权,请联系删除,谢谢! Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关,它旨在为微服务架构提

    2024年02月08日
    浏览(45)
  • Gateway网关组件(在Spring Cloud整合Gateway(idea19版本))

            Spring Cloud Gateway官网:Spring Cloud Gateway         局域网中就有网关这个概念,局域网接收数据或发送数据都要通过网关,比如使用VMware虚拟机软件搭建虚拟机集群的时候,往往我们需要选择IP段中的⼀个IP作为网关地址,网关可以对请求进行控制,提升我们系统的安

    2024年02月16日
    浏览(45)
  • Spring Cloud之API网关(Gateway)

    目录 API网关 好处 解决方案 Gateway 简介 特征 核心概念 Route(路由) Predicate(断言) Filter(过滤器) 工作流程 Route(路由) 路由配置方式 1.yml配置文件路由 2.bean进行配置 3.动态路由 动态路由 Predicate(断言) 特点 常见断言 示例 Filter(过滤器) filter分类 Pre 类型 Post 类型 网关过滤器 格式

    2024年02月08日
    浏览(52)
  • spring cloud gateway网关和链路监控

    文章目录 目录 文章目录 前言 一、网关 1.1 gateway介绍 1.2 如何使用gateway  1.3 网关优化 1.4自定义断言和过滤器 1.4.1 自定义断言 二、Sleuth--链路追踪 2.1 链路追踪介绍 2.2 Sleuth介绍 2.3 使用 2.4 Zipkin的集成  2.5 使用可视化zipkin来监控微服务 总结 所谓的API网关,就是指系统的 统

    2024年02月02日
    浏览(39)
  • Spring Cloud第二季--服务网关Gateway

    Spring Cloud Gateway是在Spring生态系统之上构建的API网关服务,基于Spring 5,Spring Boot 2和 Project Reactor等技术。 Gateway 使用的Webflux中的reactor-netty响应式编程组件,底层使用了 Netty 通讯框架。Spring Cloud Gateway能干嘛呢? Gateway是原zuul1.x版的替代。 Spring Cloud Gateway 与 Zuul的区别: Zuu

    2024年02月03日
    浏览(52)
  • 【Spring Cloud Alibaba】8.路由网关(Gateway)

    接下来对服务消费者添加路由网关来实现统一访问接口,本操作先要完成之前的步骤,详情请参照【Spring Cloud Alibaba】Spring Cloud Alibaba 搭建教程 Spring Cloud Gateway 是 Spring 官方基于 Spring 5.0 , Spring Boot 2.0 和 Project Reactor 等技术开发的网关,该项目提供了一个库,用于在 Spring W

    2023年04月24日
    浏览(40)
  • Spring Cloud GateWay 网关的相关面试题

    Spring Cloud GateWay如何实现限流? 1.Spring Cloud GateWay使用令牌桶算法实现限流(Nginx使用漏桶算法实现限流 ) 2.Spring Cloud GateWay默认使用Redis 的RateLimter限流算法来实现,所以需要引入Redis依赖 3.使用的过程中,主要配置 令牌桶填充的速率,令牌桶容量,指定限流的key 4.限流的Ke

    2024年02月13日
    浏览(56)
  • Spring Cloud Alibaba 系列之 Gateway(网关)

    网关作为流量的入口,常用的功能包括路由转发,权限校验,限流等。 Spring Cloud Gateway 是Spring Cloud官方推出的第二代网关框架,定位于取代 Netflix Zuul1.0。相比 Zuul 来说,Spring Cloud  Gateway 提供更优秀的性能,更强大的有功能。 Spring Cloud Gateway 是由 WebFlux + Netty + Reactor 实现的

    2024年02月10日
    浏览(47)
  • Spring Cloud Gateway 网关实现白名单功能

    1 摘要 对于微服务后台而言,网关层作为所有网络请求的入口。一般基于安全考虑,会在网关层做权限认证,但是对于一些例如登录、注册等接口以及一些资源数据,这些是不需要有认证信息,因此需要在网关层设计一个白名单的功能。本文将基于 Spring Cloud Gateway 2.X 实现白

    2023年04月08日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包