Gateway网关简介及使用。Spring Cloud Alibaba---Gateway概述、简单示例。什么是Gataway网关?网关能干什么?Spring Cloud如何搭建一个网关。

5 篇文章 0 订阅
订阅专栏

一、什么是网关:

微服务架构里,每一个微服务都是一个个体,各个服务可以被独立的设计、开发、测试、部署和管理。这时,各个独立部署单元可以用不同的开发测试团队维护,可以使用不同的编程语言和技术平台进行设计,这就要求必须使用一种语言和平 台无关的服务协议作为各个单元间的通讯方式,此时出现了网关。

 

网关主要用于对应用层即具体业务的控制,还有一种我们之前常用的nginx是流量层网关,虽然都具有负载均衡等功能,但是使用的场景不同,nginx用于网页架构,网关用于对具体业务的,通常来讲业务层的网关Gataway调用后与nginx网页层。

主要功能:

  • 对用户请求做身份认证、权限校验
  • 将用户请求路由到微服务,并实现负载均衡
  • 对用户请求做限流

二 、SpringCloud配置网关:

1、添加依赖:

因为网关也是一个服务,所以依然要添加到nacos里,所以我们需要先创建一个模块,然后对其进行配置。

<!--网关依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!--nacos服务发现依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> 
</dependency>

2、注册ncaos,并进行配置:

predicates的参数有多种,可以进行时间、路由规则、参数等,下文以路由规则为例。

server:
  port: 10010 # 网关端口
spring:
  application:
    name: gateway # 服务名称
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos地址
    gateway:  # 配置网关要拦截的服务
      routes: # 网关路由配置1
        - id: user-service # 路由id,自定义,只要唯一即可
          # uri: http://127.0.0.1:8081 # 路由的目标地址 http就是固定地址
          uri: lb://userservice # 路由的目标地址 lb就是负载均衡,后面跟服务名称
          predicates: # 路由断言,也就是判断请求是否符合路由规则的条件
            - Path=/user/** # 这个是按照路径匹配,只要以/user/开头就符合要求
      routes: # 网关路由配置2
        - id: order-service 
          # uri: http://127.0.0.1:8082 
          uri: lb://orderservice 
          predicates: 
            - Path=/order/** 

三、路由过滤器:

对发来的请求进行过滤,然后将返回的结果同时也进行过滤

一)过滤器:

1、filters路由过滤器:

针对某一个特定的路由:

spring:
  cloud:
    gateway:
      routes: # 网关路由配置
        - id: user-service
          uri: lb://userservice
          predicates:
            - Path=/user/**
          filters: # 过滤器
            - AddRequestHeader=Truth, Itcast is freaking awesome! # 添加请求头

2、default-filters默认过滤器:

针对上面的所有路由

spring:
  application:
    name: gateway # 服务名称
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos地址
    gateway:
      routes: # 网关路由配置
        - id: user-service 
          uri: lb://userservice  
          predicates: 
            - Path=/user/** 
        - id: order-service
          uri: lb://orderservice
          predicates:
            - Path=/order/**
      default-filters: # 默认过滤器,会对所有的路由请求都生效
        - AddRequestHeader=Truth, Itcast is freaking awesome! # 添加请求头

二)全局过滤器:

上面的是使用系统自带的过滤器,但是现在我们有自己的业务需求,所以需要编写自己的过滤器,所以需要全局过滤器。

主要是书写一个类,然后实现接口即可

public interface GlobalFilter {
   /**
    *  处理当前请求,有必要的话通过{@link GatewayFilterChain}将请求交给下一个过滤器处理
    *
    * @param exchange 请求上下文,里面可以获取Request、Response等信息
    * @param chain 用来把请求委托给下一个过滤器 
    * @return {@code Mono<Void>} 返回标示当前过滤器业务结束
    */
   Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain);
}

实现:

下以一个简单的登录为例,如果用户的请求中携带一个参数名为authorization的变量,且值为admin,则放行,否则进行拦截

@Order(-1) //值越小,过滤等级越高,当有多个拦截器时,值小的先执行
@Component  //将过滤器注入到容器中
public class AuthorizeFilter implements GlobalFilter {
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        // 1.获取请求参数
        MultiValueMap<String, String> params = exchange.getRequest().getQueryParams();
        // 2.获取authorization参数
        String auth = params.getFirst(“authorization”);
        // 3.校验
        if (“admin”.equals(auth)) {
            // 放行
            return chain.filter(exchange);
        }
        // 4.拦截
        // 4.1.禁止访问 401状态码
        exchange.getResponse().setStatusCode(HttpStatus.FORBIDDEN);  
        // 4.2.结束处理
        return exchange.getResponse().setComplete();
    }
}

三)过滤器的执行顺序:

1、在路由和默认过滤器中,先声明的order值小,后声明的值大,先执行先声明的。先后顺序即order值。

上图中路由过滤器和默认过滤器按123执行

2、当三者过滤器的order值相同时,按照 defaultFilter > 路由过滤器 > GlobalFilter  的顺序执行。

四、跨域问题:

网关处理跨域采用的同样是CORS方案,并且只需要简单配置即可实现:

spring:
  cloud:
    gateway:
      # 。。。
      globalcors: # 全局的跨域处理
        add-to-simple-url-handler-mapping: true # 解决options请求被拦截问题
        corsConfigurations:
          '[/**]':
            allowedOrigins: # 允许哪些网站的跨域请求 
              - "http://localhost:8090"
              - "http://www.leyou.com"
            allowedMethods: # 允许的跨域ajax的请求方式
              - "GET"
              - "POST"
              - "DELETE"
              - "PUT"
              - "OPTIONS"
            allowedHeaders: "*" # 允许在请求中携带的头信息
            allowCredentials: true # 是否允许携带cookie
            maxAge: 360000 # 这次跨域检测的有效期

 

Gateway快速入门
num123srtabc的博客
07-31 165
网关Gateway)是一种在微服务架构中作为统一入口的组件,用于管理和转发请求。它充当了客户端和后端服务之间的中间层,负责处理路由、负载均衡、安全认证、协议转换等功能。具体来说,网关的主要功能包括:路由转发:网关可以根据请求的URL路径将请求转发到相应的后端服务。通过配置路由规则,可以对请求进行转发、重定向或筛选。负载均衡:网关可以在多个后端服务实例之间实现负载均衡。它可以根据一定的策略将请求分发到不同的服务实例上,以提高系统的性能和可扩展性。
十一、SpringCloud实用篇_Gateway服务网关
付之一笑的专栏
12-07 2244
一、Gateway服务网关 Spring Cloud GatewaySpring Cloud一个全新项目,该项目是基于Spring5.0,Spring Boot 2.0和Project Reactor等响应式编程和事件流技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的API路由管理方式。 1.1、为什么需要网关 Gateway网关是我们服务的守门神,所有微服务的统一入口。 网关的核心功能特性: 服务路由、负载均衡 身份认证和权限校验 请求限流 架构图: 权限控制:网关作为微服务入口,需要校
Gateway网关使用
qq_51239179的博客
06-02 229
1、引入依赖 因为gateway负责将请求路由到对应的服务也需要把他交给注册中心管理2、创建启动类3、编写基础配置和路由规则 在yml配置文件中。
gateway网关使用
Bugxiu_fu的博客
01-08 3273
gateway网关使用
使用gateway网关
点点滴滴
11-06 155
https://docs.spring.io/spring-cloud-gateway/docs/2.2.5.RELEASE/reference/html/查看官网资料 其中表示在之前表示,在之后表示,带上cookie,请求头带上等 如果不满足则找不到
微服务(二)gateway网关使用
qq_71314862的博客
03-07 2722
Spring Cloud GatewaySpring Cloud推出的用来替代Zuul的网关产品,如同zuul综合了ribbon、hystrix的负载均衡、熔断、降级、限流能力,Spring Cloud Gateway也整合了hystrix。
GatewaySpring Cloud项目部署Gateway网关
weixin_43955583的博客
03-13 1251
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录一、Gateway网关什么用?二、搭建步骤1.引入库2.yml里配置服务名称和集群地址三、过滤器四、全局过滤器五、跨域问题遇到的问题 说明:本文写作目的单纯是记录一次项目搭建,以便于以后查看。 开发工具:IDEA;操作系统:MacOS 一、Gateway网关什么用? 身份认证、权限校验、服务路由、负载均衡、限流 二、搭建步骤 1.引入库 我是因为项目有nacos集群所以有集群依赖 代码如下(示例): <!-- 网关依赖 --.
Spring Cloud Gateway 网关搭建
wmlglq的博客
11-11 263
2.配置文件,看自己需求配置相关设置。整个POM文件整合其它。
SpringCloud Alibaba微服务实战十四 - SpringCloud Gateway集成Oauth2
最新发布
2401_83915900的博客
04-17 818
在webFlux环境下通过实现接口 自定义认证接口管理,由于我们的token是存在jdbc中所以命名上就叫@Slf4j@Override//根据access_token从数据库获取不到OAuth2AccessTokenreturn Mono.error(new InvalidTokenException(“Access Token 无效!”));}else {
51、springCloudGateway-网关高可用
Garry
06-05 7325
1、概述 高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计 减少系统不能提供服务的时间。我们都知道,单点是系统高可用的大敌,单点往往是系统高可用最大的 风险和敌人,应该尽量在系统设计的过程中避免单点。方法论上,高可用保证的原则是“集群化”,或者 叫“冗余”:只有一个单点,挂了服务会受影响;如果有冗余备份,挂了还有其他backup能够顶上。 我们实际使用 Spring Cloud Gateway 的方式如上图,不同的客户端使用不同的负载将请求分发
【云原生】 Spring Cloud AlibabaGateway 服务网关跨域问题
wanghuichen的博客
08-22 5165
Spring Cloud Alibaba Gateway 跨域问题如何解决? 一招教你搞定!
Gateway网关的基本使用
qq_54802008的博客
01-02 315
效果图
Gateway服务网关使用教程
qq_44732432的博客
01-13 3362
Spring Cloud GatewaySpring Cloud一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。
网关 GateWay使用详解、路由、过滤器、跨域配置
yuechuzhixing的博客
08-07 2774
有时候SpringCloudGateWay提供的过滤器工厂不能满足自己的要求。可能有时候需要在过滤时做一些其它的逻辑操作。那么这时候可以选择使用java代码自定义全局过滤器。@Component@Override// 1.获取请求参数//1.这里的request并不是servlet中的request//2.返回值是一个多键的map集合、也就是说这个map集合的键可以重复// 2.获取userName参数// 3.校验// 放行// 4.拦截// 4.1.禁止访问,设置状态码。
Gateway网关简介使用
每日一记,每周一结。
07-17 633
网关的角色是作为一个 API 架构,用来保护、增强和控制对于 API 服务的访问。API 网关一个处于应用程序或服务(提供 REST API 接口服务)之前的系统,用来管理授权、访问控制和流量限制等,这样 REST API 接口服务就被 API 网关保护起来,对所有的调用者透明。因此,隐藏在 API 网关后面的业务系统就可以专注于创建和管理服务,而不用去处理这些策略性的基础设施。
Gateway网关快速入门和基本使用
南川北渔
06-07 2340
断言(Predicate):参照 Java8 的新特性Predicate,允许开发人员匹配 HTTP 请求中的任何内容,比如请求头或请求参数,最后根据匹配结果返回一个布尔值。路由(route):由ID、目标URI、断言集合和过滤器集合组成。如果聚合断言结果为真,则转发到该路由。过滤器(filter):可以在返回请求之前或之后修改请求和响应的内容。其中路由包括:Route 主要由 路由id、目标uri、断言集合和过滤器集合组成,那我们简单看看这些属性到底有什么作用。
springCloudAlibaba——Gateway网关
一名代码爱好者的博客
04-13 986
springCloudAlibaba——Gateway网关
Spring Cloud Gataway怎么使用
07-24
使用Spring Cloud Gateway,您需要遵循以下步骤: 1. 添加依赖:在您的项目中,添加Spring Cloud Gateway的依赖项。您可以在pom.xml文件中添加以下依赖项: ```xml <groupId>org.springframework.cloud ...
写文章

热门文章

  • npm安装时卡在sill idealTree buildDeps,npm安装速度慢,npm安装卡在一个地方不动 73979
  • VUE子组件如何改变父组件传来的值,以及VUE子组件如何修改父组件的值,以及父组件修改子组件的值 30490
  • Java链接PostgreSql数据库及基本使用 20109
  • Uniapp实现自定义组件 19040
  • WEB网页版计算器(HTML、CSS、JavaScript实现) 13460

分类专栏

  • 数据库 14篇
  • 算法与数据结构 10篇
  • Java 18篇
  • Linux 10篇
  • 操作系统 4篇
  • VUE 10篇
  • C/C++ 3篇
  • 风袖 9篇
  • 前端 1篇
  • SpringBoot 16篇
  • 小程序 10篇
  • MyBatis 3篇
  • 网络 3篇
  • Git 3篇
  • mySQL 4篇
  • WEB开发 7篇
  • Python 8篇

最新评论

  • Pycharm安装scrapy以及初始化爬虫项目

    昭昭吖.: 并且我输入第三步之后并没有多一个文档出来

  • Pycharm安装scrapy以及初始化爬虫项目

    昭昭吖.: 跟着步骤来了,但是scrapy还是报错,显示没有名称为“scrapy”的模块

  • 微信小程序真机调试不能访问本地API

    秀发靓丽美美程序小白: 已解决,感谢表情包

  • Uniapp实现自定义组件

    我真的是个菜鸟,求大佬带!: 为什么我把自定义组件的名称设置为main,不生效呢?(我的/pages/下面也有个叫main的)

  • 微信小程序真机调试不能访问本地API

    ghdjhhgf: 真的可以,太感谢了

大家在看

  • iOS13系统 系统UISegmentedControl圆角不生效问题
  • <项目代码>YOLOv8作物虫害识别<目标检测> 22
  • LogicFlow自定义业务节点
  • 基于Java+SpringBoot+Vue的校园资料分享平台 514
  • 垃圾回收(GC)机制中“Stop the world”问题(暂停世界) 554

最新文章

  • 解决:java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
  • 408--计算机网络--网络层总结1
  • Java操作MinIO实现文件的上传和删除。
2023年5篇
2022年95篇
2021年7篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

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

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