带你全面了解Gateway

本文详细介绍了Spring Cloud Gateway,作为Spring Cloud的全新项目,旨在替代Zuul,提供更高的性能。内容包括:1. Gateway的介绍、属性及工作原理;2. 多种断言方式,如Path、Query、Method、Host等;3. 动态转发,整合注册中心如Eureka实现服务名称转发;4. 网关过滤器与全局过滤器的使用,包括Path、Query、Body等过滤器以及限流、重定向等功能。
摘要由CSDN通过智能技术生成

一 介绍

1.1 gateway介绍

> Spring Cloud GateWay是Spring Cloud的⼀个全新项⽬,⽬标是取代Netflix Zuul,基于Spring5.0+SpringBoot2.0+WebFlux(基于⾼性能的Reactor模式响应式通信框架Netty,异步⾮阻塞模型)等技术开发,性能⾼于Zuul,官⽅测试,GateWay是Zuul的1.6倍,旨在为微服务架构提供⼀种简单有效的统⼀的API路由管理⽅式

在项目中使用网关需要导入下面的依赖,需要是springcloud项目

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>

介绍

1.2 属性介绍

> gateway中包含以下属性

  • Route: 路由,主要的功能就是将请求转发到对应的服务端点,包含一个唯一的路由id,一个目标的url,一系列断言的集合,一组filter过滤器,当断言条件为true的时候就会执行这个路由

  • Predicate: 断言,主要是判断当前访问网关的地址应该执行哪个路由,转发到什么地方,可以通过判断请求中的任何数据来决定结果,比如可以判断请求头header,请求参数等

  • Filter: 过滤器,和servlet中的过滤器类似,主要是在请求转发之前和返回结果之前进行相关的处理

术语

 

1.3 网关如何工作

> 下图描述了网关如何工作,当网关收到请求的时候,会根据定义好的路由映射进行匹配,查看当前的请求地址能够匹配那个mapping, 然后将相关的请求发送到下面的web handler, handler中有一些过滤器组成了责任链对请求进行pre处理,然后最终送达到响应的服务器,在目标返回结果之后再通过过滤器进行post处理,最终返回给调用这个,过滤器的虚线用于区分是前置处理还是后置处理,其实整体过程类似于SpringMVC

工作流程图

 

流程介绍

 

二 断言

> 断言的作用就是做boolean判断,为true则代表符合当前的路由,会转发到对应的地址,Gateway 提供了很多断言的方式,可以让我们对请求进行匹配映射,并且可以多种断言同时使用 > > 断言语法: 方式=值

2.1 Path断言

> 当请求的地址匹配当前path的时候会执行当前路由

predicates:
    -Path=/mg

示例,下面的断言方式和这里一样

spring:
  application:
    name: gateway
  cloud:
    gateway:
      routes:
        - id: 08consumer-eureka-feign # 当前路由策略的唯一ID,可以随便写,但是如果出现多个id,必须唯一
          uri: http://localhost:12000 #当前路由指向的真实地址,这个地址是不是最终真实地址,最终地址会拼接上访问地址
          predicates: #配置断言, 符合下面断言的请求会转发到上面的url,断言很多种条件
            - Path=/order/**  #断言的条件是请求的地址符合这个表达式,注意格式为Path=/order/**

2.2 Query断言

> 参数值可以写正则,也可以只写参数名,在传递了符合的参数名和值之后会转发到对应的url

predicates:
	- Query=name,ba. #要求必须传递一个参数名叫name 值为ba开头的数据 .是匹配一个字符 *匹配N个相同的字符 ,  .*可以匹配任何内容

2.3 Method断言

> 当请求方式匹配的时候执行当前路由

predicates:
	- Method=get

2.4 Host断言

> 当是通过指定域名访问当前网关的时候执行对应的路由

predicates:
	- Host=localhost:8080

2.5 Cookie断言

> 当包含某个cookie和值的时候执行

predicates:
	- Cookie=name,yiming

2.6 Header断言

> 当包含某个header和对应的值的时候执行

predicates:
	- Header=reqId,9090\d+ #正则表达式\d+ 数字

2.7 Weight 权重路由

> 权重是将相同的请求分配到不同的服务器, Weight后的第一个参数一致的时候通过后面的数字按照比例分配请求

- id: weight2 #这个id唯一即可
  uri: http://localhost:12000
  predicates:
    - Path=/order/** #访问的地址
    - Weight=group1,2 #这个值用来控制访问当前地址的时候有多少请求会来这个地方,group1随便写的
  
- id: weight8 #唯一id
  uri: http://localhost:12001
  predicates:
    - Path=/order/** #这个地址和上面的地址一样
    - Weight=group1,8 #这里的group1要和上面一样,才会视为一组需要权重划分的操作

2.9 Before 时间路由

> 指定一个时间,在当前时间之前可以访问,可以用于定时停机

predicates:
	- Before=2022-04-19T00:05:00.789+08:00[Asia/Shanghai]

2.10 After 时间路由

> 指定一个时间,在当前时间之后可以访问,可以用于定时开启

predicates:
	- After=2022-04-19T00:05:00.789+08:00[Asia/Shanghai]

2.11 Between时间区间路由

> 在指定的时间区间内可以访问

predicates:
	- Between=2021-04-19T00:05:00.789+08:00[Asia/Shanghai],2022-04-19T00:05:00.789+08:00[Asia/Shanghai]

2.12 RemoteAddr

> 必须来自于某个地址发起的请求才可以访问

predicates:
	- RemoteAddr=192.168.1.1/24 #注意这个如果是本地localhost测试,并且设置了Host=localhost 那么就无法访问了,因为通过localhost服务端得到的你的ip是0:0:0:0:0:0:0:1,那就无法匹配这个地址了

三 动态转发

> 上面的例子中我们的目的地址是直接写死的一个服务器,实际开发中肯定是动态从注册中心中获取 > > 此处以Eureka为例子,其他的注册中心只需要替换对应的 注册中心配置即可

3.1 整合注册中心

3.1.1 添加eureka依赖

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

3.1.2 配置

> 我们需要给网关配置注册中心的位置,并且告诉gateway从注册中心中获取服务,需要将url变成lb开头的协议

spring:
  application:
    name: gateway
  cloud:
    inetutils:
      ignored-interfaces: [ 'VMware.*' ]  #经过测试,我们发现我们的电脑上存在多个网卡的时候, 程序注册到注册中心的时候可能会带错ip过去,比如把虚拟机的网卡ip带过去了,如果是本机内部使用没问题,但是阔机器就不行了# 忽略掉我们不想要的网卡
    gateway:
      routes:
        - id: 08consumer-eureka-feign # 当前路由策略的唯一ID,可以随便写
          uri: lb://08CONSUMER-EUREKA-FEIGN #lb开头代表是负载均衡,意味着需要从注册中心获取数据,获取的是当前名字的服务地址
          predicates: #配置断言, 符合下面断言的请求会转发到上面的url,断言很多种条件
            - Path=/order/**  #断言的条件是请求的地址符合这个表达式,注意格式为Path=/order/**
    loadbalancer: #设置负载均衡
      ribbon:
        enabled: false #设置不用ribbon的负载均衡方式,因为它是阻塞的,设置为false后会自动变为非阻塞
#配置注册中心
eureka:
  client:
    service-url:
      defaultZone: http://localhost:10000/eureka/
  instance:
    prefer-ip-address: true #在注册中心显示的是ip,而不是机器名

> 上面的方式是因为gateway中有默认的一个

好程序员IT教育
关注 关注
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Gateway介绍
weixin_50589815的博客
03-28 1513
Getway 简介为什么需要网关网关的作用快速入门 为什么需要网关 对网关我们并不陌生,网关的概念来源于计算机网络,表示不同网络之间的关口。 在系统设计中,网关也是一个重要的角色,其中最典型的是各大公司的开放平台,开放平台类网关是企业内部系统对外的统一入口,承担了很多业务,比如内外部数据交互、数据安全、监控统计等功能,简单来说就是为了不让用户或者直接访问我们的资源,需要在座一层判断,鉴权等 网关的作用 1.身份认证和权限验证 2.服务路由,和负载均衡 3.请求限流 在 SpringCloud 中网关的实现
spring-boot-gateway 整合网关gateway +注册中心 有注释 打开可运行
04-08
5. **Spring Cloud生态**:Spring Boot Gateway 是 Spring Cloud 生态系统的一部分,它可以与 Spring Cloud Config、Spring Cloud LoadBalancer 等其他组件协同工作,提供更全面的微服务解决方案。 6. **注释**:...
Gateway网关简介及使用
热门推荐
AlgoRain的博客
10-09 28万+
Gateway网关简介及使用 1. 什么是 API 网关(API Gateway) 分布式服务架构、微服务架构与 API 网关 在微服务架构里,服务的粒度被进一步细分,各个业务服务可以被独立的设计、开发、测试、部署和管理。这时,各个独立部署单元可以用不同的开发测试团队维护,可以使用不同的编程语言和技术平台进行设计,这就要求必须使用一种语言和平 台无关的服务协议作为各个单元间的通讯方式。 AP...
Spring Cloud Alibaba 快速学习之 Gateway
最新发布
D_J_Dragon的博客
09-01 1191
Gateway顾名思义就是“网关”的意思,旨在为微服务提供统一的访问入口,然后转发到各个微服务,通常可以在网关中统一做安全认证、监控、限流等等功能,避免每个微服务都重复实现这些功能。
Gateway简介
weixin_60934893的博客
12-14 1149
基于spring5、springboot2.0和Project Reactor等技术开发的网关,目的是为微服务架构系统提供高性能,且简单易用的api路由管理方式。优点:1:性能强劲,是第一代网关zuul的1.6倍2:功能强大,内置很多实用功能如:路由、过滤、限流、监控等。3:易于扩展。
Gateway详解
weixin_50545075的博客
10-21 1551
gateway 限流 过滤器 route规则 健康检测
Gateway的简单介绍和使用
Rcain_R的博客
04-11 1252
Gateway的简单介绍和使用
zabbix-java-gateway.tar.zip
01-31
这种集成有助于全面了解整个IT基础设施的运行状况,及时发现并解决问题。 4. **配置与优化** 配置Zabbix Java Gateway涉及到设置JMX连接参数、定义监控项和触发器,以及调整数据采集频率。优化则包括合理设置缓存...
OMRON SYSMAC gateway示例代码.zip
04-06
2. **PLC编程**:对基本的PLC编程概念如Ladder Logic或Structured Text的了解,有助于理解与Gateway的交互。 3. **OMRON通信协议**:了解OMRON的特定通信协议,如NJ/NX系列PLC的Ethernet/IP或CX-One通信协议。 4. **...
Spring Cloud Gateway中文教程:全面解析与配置指南
"Spring Cloud Gateway中文参考指南是一个详细的教程,旨在帮助用户全面了解和高效学习Spring Cloud Gateway的配置和使用。教程基于Spring Cloud Gateway 3.1.3版本,覆盖了从基本引入到高级特性的全方位指导。" ...
Spring Cloud H (五)服务网关 GateWay
qq_43684005的博客
07-09 771
GateWay官方网站 概述
gateway用法详解
04-14
gateway用法详解
Gateway网关简介以及使用
怪咖@的博客
08-20 1万+
Spring Cloud Gateway是Spring官方基于Spring 5.0,Spring Boot 2.0和Project Reactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供一种简单而有效的统一的API路由管理方式。Spring Cloud Gateway作为Spring Cloud生态系中的网关,目标是替代ZUUL,其不仅提供统一的路由方式,并且基于Filter链的方式提供了网关基本的功能,例如:安全,监控/埋点,和限流等。
使用springcloud2021版本修改黑马的教程
大胆刁民的博客
10-13 1248
Gateway服务网关 Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。 Spring Cloud Gateway 作为 Spring Cloud 生态系统中的网关,目标是替代 Netflix Zuul,其不仅提供统一的路由方式,并且基于 Filter 链的方式提供
Gateway路由功能详解
Jerry的博客
12-29 3463
1. 路由组成结构 Gateway中可以定义很多个Route,一个Route就是一套包含完整转发规则的路由,主要有三部分组成 断言集合:断言是路由器处理的第一个环节,他是路由的匹配规则,他决定了一个网络请求是否可以匹配给当前路径来处理,之所以他是一个集合是因为我们可以个一个路由添加多个断言,当每个断言都配置成功了才算是过了路由这一关 过滤器集合:如果请求通过了前面断言的匹配,表明被路由正式接手了,结下就需要经过过滤器了,比如说权限验证,如果验证不通过就设置为Status Code为403并中断操作 UR
Gateway-简单介绍使用
weixin_44044929的博客
05-07 675
微服务网关 微服务网关是整个微服务API请求的入口,可以实现日志拦截、权限控制、解决跨域问题、限流、熔断、负载均衡、黑名单与白名单拦截、授权等。 为什么需要微服务网关? 微服务中的架构模式采用前后分离,前端调用接口地址都能够被抓包分析到。 传统的方式我们可以使用过滤器拦截用户会话信息,这个过程所有的服务器都必须要写入该验证会话登陆的代码。 使用微服务网关可以统一解决这些问题和实现这些功能。 过滤器和网关的区别? 过滤器适合于单个服务实现过滤请求,局部拦截。 网关拦截整个微服务实现过滤请求,能够解决整个微服务
网关Gateway的介绍与使用
小威的博客
07-07 1万+
本文介绍了微服务中Gateway的使用,正在学习Gateway或者准备学习的大佬看过来哟
写文章

热门文章

  • Java的开发工具有哪些?这十款工具大厂都在用! 5190
  • 带你全面了解Gateway 2882
  • 完全解析分布式存储,带你了解HDFS的块 2539
  • 深入理解数组的slice方法 2371
  • 2023年Java就业压力怎么这么大?为什么找工作如此艰难? 2143

分类专栏

  • java 37篇
  • 大数据 31篇
  • spring 19篇
  • eclipse 5篇
  • 前端 15篇

最新评论

  • 2023年互联网大厂寒冬已至?Java程序员还能找到工作吗?

    阿J~: 每个知识点讲解清晰 ,学到了学到了

  • 推荐4个很棒的Java项目,超级适合小白练手,赶紧收藏!

    好程序员IT教育: 需要源码的同学,后台dd吧~

  • 奉劝找工作的Java程序员:胆子越大,offer越多!

    好程序员IT教育: 如果还不会如何面试,可以后台踹小源帮你分析指导!

  • 好程序员:Java培训出来,如何面试找工作月薪过万?

    好程序员IT教育: 后台DD小源,回复1,领取Java学习资料包!

  • 好程序员:Java培训不丢人,你简历造假很丢人!

    好程序员IT教育: 好程序员秉承只收本科以上的同学,并保证薪资不低于1万,后台dd1,领取Java学习资料包。

最新文章

  • Java 类概念简介
  • 大厂Java面试题详解,很多人答不上来,附答案解析!
  • 好程序员:2023年自学Java四阶段学习法,真滴好用麻啦!
2023年210篇
2022年16篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

玻璃钢生产厂家青海寺庙玻璃钢雕塑新疆玻璃钢雕塑制作视频台湾玻璃钢雕塑厂家大玻璃钢花盆图片松江区玻璃钢雕塑推荐厂家浙江公园玻璃钢雕塑哪家便宜毕节玻璃钢雕塑厂家郑州镜面玻璃钢彩绘雕塑小品亳州大型玻璃钢雕塑批发玻璃钢大门雕塑怎么收费信阳小区玻璃钢雕塑浙江周年庆典商场美陈报价甘肃玻璃钢雕塑图片唐县玻璃钢雕塑工艺品厂江苏特色玻璃钢雕塑销售厂家新款玻璃钢鹿雕塑浙江商业商场美陈厂家直销湖南校园玻璃钢景观雕塑生产厂家阿拉尔玻璃钢雕塑云南火烈鸟玻璃钢雕塑厂家惠州玉树玻璃钢人物雕塑宁夏生肖玻璃钢雕塑合肥正规玻璃钢雕塑销售电话黄冈小区玻璃钢雕塑公司南昌定制玻璃钢雕塑市场泉州专业玻璃钢雕塑贵阳医院玻璃钢雕塑季节性商场美陈生产广东人物玻璃钢雕塑定做义乌玻璃钢雕塑订做香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化