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.mzph.cn/news/587273.shtml

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

相关文章

【SpringCloud笔记】(12)分布式请求链路跟踪之Sleuth

Sleuth 背景 在微服务框架中&#xff0c;一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果&#xff0c;每一个前段请求都会形成一条复杂的分布式服务调用链路&#xff0c;链路中的任何一环出现高延时或错误都会引起整个请求最后的…

WeNet语音识别分词制作词云图

在线体验 ,点击识别语音需要等待一会&#xff0c;文件太大缓存会报错 介绍 本篇博客将介绍如何使用 Streamlit、jieba、wenet 和其他 Python 库&#xff0c;结合语音识别&#xff08;WeNet&#xff09;和词云生成&#xff0c;构建一个功能丰富的应用程序。我们将深入了解代码…

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

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

LVS负载均衡配置虚拟引起微服务注册混乱

线上小程序突然报错&#xff0c;查看网关日志&#xff0c;访问下游微服务A时大量报错&#xff1a; 1&#xff09;检查微服务是否未注册。登录eureka页面&#xff0c;发现三个节点均正常注册 三个微服务节点地址分别为&#xff1a;13.9.1.91:8080&#xff0c;13.9.1.92:8080和1…

ARM CCA机密计算软件架构之软件堆栈概述

Arm CCA平台通过硬件添加和固件组件的混合方式实现,例如在处理元素(PEs)中的RME以及特定的固件组件,特别是监视器和领域管理监视器。本节介绍Arm CCA平台的软件堆栈。 软件堆栈概述 领域VM的执行旨在与Normal world(正常世界)隔离,领域VM由Normal world Host(正常世界…

【软件工程】融通未来的工艺:深度解析统一过程在软件开发中的角色

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; 软件工程 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言&#xff1a; 正文 统一过程&#xff08;Unified Process&#xff09; 介绍和解释&#xff1a; 应用&#xff1a; 优缺点&#xf…

C/C++ 函数的默认参数

下面介绍一项新内容 - 默认参数。 默认参数指的是当函数调用中省略了实参时自动使用的一个值。 例如&#xff0c;如果将 void wow (int n)设置成n 有默认值为1&#xff0c;则函数调用 wow()相当于 wow(1)这极大地提高了使用函数的灵活性。 假设有一个名为left()的函数&#xff…

SpringIOC之ApplicationObjectSupport

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

<JavaEE> TCP 的通信机制(一) -- 确认应答 和 超时重传

目录 TCP的通信机制的核心特性 一、确认应答 1&#xff09;什么是确认应答&#xff1f; 2&#xff09;如何“确认”&#xff1f; 3&#xff09;如何“应答”&#xff1f; 二、超时重传 1&#xff09;丢包的概念 2&#xff09;什么是超时重传&#xff1f; 3&#xff09…

详解信道容量,信道速率,安全速率的区别

目录 一. 信道容量与信道速率 二. 小结 三. 安全速率与物理层安全 3.1 香农物理层安全模型 3.2 安全信道速率 四. 补充安全中断概率&#xff08;Secrecy Outage Probability, SOP&#xff09; 五. 补充安全分集度&#xff08;Secrecy Diversity Order, SDO&#xff09; …

AAAI 2024 | 用逆向思维图(ReX-GoT)进行多选对话常识推理

©PaperWeekly 原创 作者 | 郑理 单位 | 武汉大学硕士生 研究方向 | 自然语言处理 论文题目&#xff1a; Reverse Multi-Choice Dialogue Commonsense Inference with Graph-of-Thought 论文作者&#xff1a; 郑理&#xff0c;费豪&#xff0c;李霏&#xff0c;李波波&am…

EI级 | Matlab实现TCN-BiGRU-Multihead-Attention多头注意力机制多变量时间序列预测

EI级 | Matlab实现TCN-BiGRU-Multihead-Attention多头注意力机制多变量时间序列预测 目录 EI级 | Matlab实现TCN-BiGRU-Multihead-Attention多头注意力机制多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.【EI级】 Matlab实现TCN-BiGRU-Mult…

2023年03月09日_谷歌视觉语言模型PaLM-E的介绍

自从最近微软凭借OpenAI 和ChatGPT火了一把之后呢 老对手Google就总想着扳回一局 之前发布了硬刚ChatGPT的Bard 但是没想到翻车了 弄巧成拙 所以呢Google这一周又发了个大招 发布了史上最大的视觉语言模型PaLM-E 这个模型有多夸张呢 参数量高达5,620亿 是ChatGTP-3的三…

nextTick的原理

开发中有这么一个需求&#xff0c;回显的适合&#xff0c;el-tree的检查严格标志属性更新为true。当更新完成后&#xff0c;又要改为false。还原。 <template><div><el-tree:data"data"show-checkbox:check-strictly"checkStrictly"default…

linux安装java8

1、下载java 根据自己系统的位数下载 查看系统位数命令&#xff1a;getconf LONG_BIT 下载地址 https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html 2、解压、移动 将下载的文件上传到linux系统中并解压 tar -zxvf jdk-8u333-linux…

条件编译处理多端差异

条件编译https://uniapp.dcloud.net.cn/tutorial/platform.html#%E4%B8%BA%E4%BB%80%E4%B9%88%E9%80%89%E6%8B%A9%E6%9D%A1%E4%BB%B6%E7%BC%96%E8%AF%91%E5%A4%84%E7%90%86%E8%B7%A8%E7%AB%AF%E5%85%BC%E5%AE%B9 <template><view class"container"><…

OSPF ROUTER-ID-新版(15)

目录 整体拓扑 操作步骤 1.INT 验证Router-ID选举规则 1.1 查看路由器Router-ID 1.2 配置R1地址 1.3 查看R1接口信息 1.4 查看R1Router-ID 1.5 删除接口IP并查看Router-ID 1.6 手工配置Router-ID 2.基本配置 2.1 配置R1的IP 2.2 配置R2的IP 2.3 配置R3的IP 2.4 配…

c++ 简单实用万能异常捕获

多层捕获异常&#xff0c;逐渐严格。并打印出错信息和位置&#xff1a;哪个文件&#xff0c;哪个函数&#xff0c;具体哪一行代码。 #include <stdexcept> // 包含标准异常类的头文件try {int a 2 / 0; }catch (const std::runtime_error& e) {// 捕获 std::runt…

游戏任务系统实现思路

文章目录 一、需求介绍二、数据库设计3、代码部分实现 一、需求介绍 1、首先任务的类型不同&#xff0c;可以分为&#xff1a;日常任务、成长任务、活动任务等等。 2、当达到任务目标时&#xff0c;自动发放任务奖励。 3、任务需要后台可配置&#xff0c;例如&#xff1a;任务…

访问公网视频监控平台,看不到实时视频的问题查处

一、实时监控视频看不到了的问题出现 今天在给客户演示实时视频监控&#xff0c;通过公网平台能够正常查看各个品牌IPC的实时视频&#xff08;在浏览器页面输入“http://公网平台IP地址”&#xff0c;关于IP地址详细介绍&#xff0c;可以看以前文章&#xff09;&#xff0c;如下…