统一网关Gateway

news2024/9/28 3:22:41

网关功能:

  • 身份验证、权限校验
  • 服务路由、负载均衡
  • 请求限流

网关实现技术:

  • gateway
  • zuul

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

搭建网关服务

  1. 创建新module,引入Spring Cloud Gateway的依赖和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/开头就符合要求           
    

路由配置:

  • 路由id:路由的唯一标示

  • 路由目标(uri):路由的目标地址,http代表固定地址,lb代表根据服务名负载均衡

  • 路由断言(predicates):判断路由的规则,

  • 路由过滤器(filters):对请求或响应做处理

路由过滤器GatewayFilter

GatewayFilter是网关中提供的一种过滤器,可以对进入网关的请求和微服务返回的响应做处理:

路由过滤器

过滤器工厂 GatewayFilterFactory

Spring提供了31种不同的路由过滤器工厂。例如:

名称说明
AddRequestHeader给当前请求添加一个请求头
RemoveRequestHeader移除请求中的一个请求
AddResponseHeader给响应结果中添加一个响应头
RemoveResponseHeader从响应结果中移除有一个响应头
RequestRateLimiter限制请求的流量

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

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

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

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

spring:
	cloud:
		gateway:
			routes: # 网关路由配置
				- id: user-service
				  uri: lb://userservice
				  predicates:
					- Path=/user/**
			default-filters: #默认过滤器配置,对于所有路由都生效
        		- AddRequestHeader=Truth,遥遥领先!

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

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

相关文章

Servlet 综合案例(empProject)

✅作者简介&#xff1a;热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&#xff1a;Java案例分…

计算机网络进阶 ---- 网络类型 ---- 二层封装协议 ---- HDLC ---- PPP ---- pap认证 ---- chap认证 ---- 详解

一、网络类型&#xff1a; 【1】点到点 &#xff08;Peer to Peer – p2p&#xff09; ---- 在一个网段中&#xff0c;只能部署两个节点&#xff1b;【2】MA&#xff08;Multiple Access&#xff09; ---- 多路访问 ---- 一个网段中&#xff0c;可以部署的节点数量不限制&…

经典文献阅读之--OV2SLAM(高速视觉slam)

0. 简介 视觉里程计最近几年越来越受到学术界以及工业界的认可&#xff0c;以ORB和VINS为代表的视觉SLAM已经可以满足绝大多数场景&#xff0c;而OV2SLAM在其他VSLAM中脱颖而出&#xff0c;其实时性以及具体的回环性能在测试中都得到了认可。下面我们就来看一下《OV2SLAM : A …

TiDB分布式数据库架构介绍

简介 TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库&#xff0c;是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 的融合型分布式数据库产品&#xff0c;具备水平扩容或者缩容、金融级高可用、实时 HTAP、云…

Syncfusion Essential Studio Enterprise新功能

Syncfusion Essential Studio Enterprise新功能 添加了新的MediaQuery、Menute和Rating组件。 应用程序栏、浮动操作按钮、消息和快速拨号组件现在可以在生产中使用。 添加了对甘特图中按需加载的支持。 ASP.NET核心 添加了新的分级控件。 应用程序栏、浮动操作按钮、提及、消息…

什么是密码管理器?它安全吗?

密码管理器或密钥管理员是一类用于生成、检索、保存及管理复杂密码、数字签名的措施&#xff0c;可以由硬件或软件实现。因此&#xff0c;密码管理器一般也称作密码管理软件。复杂密码的生成一般按需要以随机算法产生&#xff0c;而密码数据则保存于一个以密码、数字签名等方式…

DP刷题(一)

目录 拆分单词 牛客题霸_牛客网 【思路梳理】​ 剑指 Offer II 100. 三角形中最小路径之和 【解法一】自顶向下 【解法二】自底向上 路径的数目 剑指 Offer II 098. 路径的数目 【解法一】 【解法二】 路径的数目&#xff08;加入障碍物&#xff09;63. 不同路径 II 【解…

unity 简单实现三阶魔方游戏

unity 简单实现三阶魔方游戏 魔方体验地址 工程文件免费下载 实现思路 一、魔方的旋转 三阶魔方由26个方块与 9个旋转轴组成。旋转轴旋转时带动在其控制范围的方块旋转。 旋转轴如何带动方块旋转&#xff1f; 把旋转轴控制范围内的方块设置成旋转轴的子物体&#xff0c;…

必背经典!这些软件测试面试题及答案别放过!

对于很多软件测试新手来说&#xff0c;技术面试往往是整个面试体系里最让人头疼的部分&#xff0c;今天我为选取了软件测试面试中&#xff0c;一些经典的问题和答案&#xff0c;供大家参考使用。并且&#xff0c;还给你们奉上了一个免费的面试刷题小程序哟&#xff01;拿走不谢…

调试前端代码二三事--(一)-调试基础

一&#xff0c;在网页上调试代码 代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport…

房产管理系统中CAD图形管理分析

随着技术的不断进步和升级&#xff0c;以及高校房屋建筑物数量的不断扩充&#xff0c;建立房屋资产管理信息系统进行信息化、数字化、图形化房屋资产管理已经是势在必行。学校有庞大的房屋数据、大量的CAD图纸、复杂的房屋分类&#xff0c;建设房屋管理系统&#xff0c;能够加强…

JavaSE高级篇:运行时数据区

文章整理自深入理解Java虚拟机第一章概述第二章&#xff1a;运行时数据区域一&#xff1a;程序计数器二&#xff1a;Java虚拟机栈三&#xff1a;Java堆四&#xff1a;方法区五&#xff1a;运行时常量池六&#xff1a;直接内存第一章概述 Java程序员把内存控制的权利交给了JVM …

Spring MVC 获取参数

1..获取参数 得到单个参数&#xff1a; 运行结果&#xff1a; 得到俩个参数&#xff1a; 运行结果&#xff1a; 得到多个参数&#xff08;对象&#xff09; 运行结果&#xff1a; 通过表单传递参数&#xff1a; 但是&#xff0c;如果我用json传递就不行了&#xff0c;namenul…

【回答问题】ChatGPT上线了!给我推荐20个比较流行的3D点云分割模型

给我推荐20个比较流行的点云 3D 分割模型 这里是 20 个比较流行的点云 3D 分割模型: PointNet PointNet PointCNN Kd-Net SpiderCNN PointSIFT PointASNL PointGroup PointConv PointWeb PointGNN PointPillars PointSESA PointSNE DensePoint PointSAP PointSGN PointGCN Po…

Java 应用与数据库的关系

1.什么是数据库• 数据库就是用来存储和管理数据的仓库• 数据库存储数据的优先。2.数据库的优点• 可存储大量数据;方便检索;• 保持数据的一致性、完整性﹔安全&#xff0c;可共享;• 通过组合分析,可产生新数据。3.数据库的发展历程• 没有数据库,使用磁盘文件存储数据,层次…

2022年度AI亮点项目大起底,ChatGPT是你心目中的第一吗?

回顾2022年&#xff0c;人工智能取得了巨大进步&#xff0c;我有一种感觉&#xff0c;人工智能正在扭曲我的时间感官。谁能相信Stable Diffusion只有4个月大&#xff0c;而ChatGPT的出现才一个多月&#xff1f;感觉只是眨了眨眼&#xff0c;我们差点错过了一个全新的行业。 在过…

Effective_Objective-C_4协议与分类】

文章目录前言23.通过委托与数据源协议进行对象间的通信协议委托模式数据源模式要点总结24.将类的实现代码分散到便于管理的数个分类之中分类Xcode创建一个分类分类需要注意什么要点25.总是为第三方的分类名称加前缀要点26.切勿在分类里面声明属性关联对象扩展可以添加属性要点2…

用javascript分类刷leetcode20.字符串(图文视频讲解)

1143. 最长公共子序列 (medium) 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 &#xff0c;返回 0 。 一个字符串的 子序列 是指这样一个新的字符串&#xff1a;它是由原字符串在不改变字符的相对顺序的情况下删…

系分 - UML【概念】

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 文章目录UML - Unified Modeling LanguageUML中有4种事物结构事物行为事物分组事物注释事物UML图的分类结构型图&#xff08;静态图&#xff09;行为型图&#xff08;动态图&#xff09;UML图 - 静态图[结构型]类图…

C#枚举器和迭代器

C#枚举器和迭代器 使用foreach语句时&#xff0c;可以依次取出数组里面的元素&#xff0c;原因就是数组提供了“枚举器&#xff08;Enumerator&#xff09;”&#xff0c;枚举器知道元素的位置并返回请求项。 枚举器IEnumerator 枚举器实现了IEnumerator接口&#xff0c;该接…