springcloud微服务篇--6.网关Gateway

一、为什么需要网关?

网关功能:

身份认证和权限校验

服务路由、负载均衡

请求限流

 在SpringCloud中网关的实现包括两种:

gateway

zuul Zuul是基于Servlet的实现,属于阻塞式编程。而SpringCloudGateway则是基于Spring5中提供的WebFlux,属于响应式编程的实现,具备更好的性能。

网关的作用:

对用户请求做身份认证、权限校验

将用户请求路由到微服务,并实现负载均衡

对用户请求做限流 

 二、搭建网关服务

1、创建新的module,引入SpringCloudGateway的依赖和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、编写路由配置及nacos地址 

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

 

 三、过滤器工厂。

案例1:

 给所有进入userservice的请求添加一个请求头

给所有进入userservice的请求添加一个请求头:Truth=itcast is freaking awesome!

实现方式:在gateway中修改application.yml文件,给userservice的路由添加过滤器:

如果要对所有的路由都生效,则可以将过滤器工厂写到default下。格式如下: 

 

 1.过滤器的作用:

过滤器的作用是什么?

对路由的请求或响应做加工处理,比如添加请求头

配置在路由下的过滤器只对当前路由的请求生效

defaultFilters的作用是什么?

对所有路由都生效的过滤器

 全局过滤器 GlobalFilter

 全局过滤器的作用也是处理一切进入网关的请求和微服务响应,与GatewayFilter的作用一样。 区别在于GatewayFilter通过配置定义,处理逻辑是固定的。而GlobalFilter的逻辑需要自己写代码实现。 定义方式是实现GlobalFilter接口。

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

需求:定义全局过滤器,拦截请求,判断请求的参数是否满足下面条件: 参数中是否有authorization, authorization参数值是否为admin 如果同时满足则放行,否则拦截

 

实现全局过滤器的步骤?

实现GlobalFilter接口

添加@Order注解或实现Ordered接口

编写处理逻辑 

1.过滤器的执行顺序

 

路由过滤器、defaultFilter、全局过滤器的执行顺序?

order值越小,优先级越高 当order值一样时,顺序是defaultFilter最先,然后是局部的路由过滤器,最后是全局过滤器 

2.跨域问题处理 

 跨域:域名不一致就是跨域,主要包括:

域名不同: www.taobao.com 和 www.taobao.org 和 www.jd.com 和 miaosha.jd.com 域名相同,端口不同:localhost:8080和localhost8081

跨域问题:浏览器禁止请求的发起者与服务端发生跨域ajax请求,请求被浏览器拦截的问题 解决方案:CORS

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/310924.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初始Java

前言&#xff1a; 从今天开始&#xff0c;我们就进入Java的学习了&#xff0c;前期有很多语法是和C语言相同的&#xff0c;所以有些细节肯能会跳过&#xff08;希望各位有一门语言基础&#xff0c;最好是C&#xff09;。 配置环境变量&#xff1a; 在使用Java编译之前&#xf…

第2课 使用FFmpeg读取rtmp流并用openCV显示视频

本课对应源文件下载链接&#xff1a; https://download.csdn.net/download/XiBuQiuChong/88680079 这节课我们开始利用ffmpeg和opencv来实现一个rtmp播放器。播放器的最基本功能其实就两个:显示画面和播放声音。在实现这两个功能前&#xff0c;我们需要先用ffmpeg连接到rtmp服…

副业类小报童热门专栏TOP15

今天介绍15个副业小报童&#xff0c;可以说是当前小报童平台&#xff0c;副业类专栏的天花板内容了 这些专栏&#xff0c;都有免费内容可以查看&#xff0c;而且还是3天无理由退款的&#xff0c;完全可以尝试着订阅一波 关键单价都非常亲民&#xff0c;怎么都不亏&#xff01…

蓝桥杯嵌入式KEY

1.按键原理图 2.按键GPIO引脚设置成输入&#xff0c;上拉模式 3.设置TIM4时钟源为外部时钟源 PSC为80-1 Period为10000-1 打开NVIC 中断时间为10ms 4.在bsp文件中添加interrupt.c文件 5.按键单击代码 6.长按键 7.按键过程和显示过程

2024新年快乐烟花代码

一、前言 很快就是2024年了&#xff0c;让我们好好告别2023&#xff0c;迎接2024。 凡是过往皆是序章&#xff0c;所有未来皆为可盼。在2023年里也许你踏足山藏&#xff0c;拥有花的铺簧书的风光&#xff0c;也许你进入低谷&#xff0c;经历了一个人的兵荒马乱。但没关系&…

第二部分 离散型随机变量

目录 求分布律里的未知数 例1 例2 根据X的分布律写Y的分布律 例3 根据(X,Y)的分布律写Z的分布律 例4 根据(X,Y)的分布律写边缘分布律 例5 X与Y相互独立时的联合分布律 例6 根据分布律求期望、方差 例7 求分布律里的未知数 例1 已知X的分布律为 X-202P0.40.3k ,试求k 解 0.40…

Linux 安装 mysql【使用yum源进行安装】

配置yum 源 首先&#xff0c;去到mysql网站&#xff0c;找到它的rpm的资源包 “mysql80-community-release-el9-5.noarch.rpm” 我们将其下载下来&#xff0c;然后配置yum源&#xff08;下面两种方式二选一即可&#xff09; ① 使用xftp传输&#xff0c;然后配置yum源 rpm …

【软件工程】走进敏捷开发:灵活、协作、迭代的软件工艺之旅

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; 软件工程 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言&#xff1a; 正文 敏捷开发&#xff08;Agile Development&#xff09; 详细介绍&#xff1a; 优缺点&#xff1a; 优点&#xf…

OSG 关于MVPW变换

目录 1、模型 Model 2、观察矩阵 ViewMatrix 4、窗口矩阵变化 5、总结 在osg中观察矩阵接口设置如下: 其中eye是相机的世界坐标位置,center是相机观察的位置,up是相机向上向量。 在计算机的三维世界中&#xff0c;相机如同我们的眼睛&#xff0c;捕捉眼前的每一副画面&#xff…

Nx市工业数据洞察:Flask、MySQL、Echarts的可视化之旅

Nx市工业数据洞察&#xff1a;Flask、MySQL、Echarts的可视化之旅 背景数据集来源技术选型功能介绍创新点总结 背景 随着工业化的不断发展&#xff0c;Nx市工业数据的收集和分析变得愈发重要。本博客将介绍如何利用Flask、MySQL和Echarts等技术&#xff0c;从统计局获取的数据…

ElasticSearch历史版本/老版本下载

下载地址 https://www.elastic.co/cn/downloads/past-releases#elasticsearch 搜索所需版本并下载

中医电子处方系统,西医个体诊所门诊卫生室病历记录查询软件教程

中医电子处方系统&#xff0c;西医个体诊所门诊卫生室病历记录查询软件教程 一、软件程序问答 1、电子处方软件如何快速开单&#xff1f; 如下图&#xff0c;软件以 佳易王诊所电子处方管理系统V17.1版本为例说明 在开电子处方的时候可以按单个药品开&#xff0c;也可以直…