springcloud笔记 (8) -网关 Gateway

网关 

出国需要过海关

网关:网络的关卡

 网关的作用

1:路由转发

2:安全控制  保护每个服务,不需要将每个暴露出去

3:负载均衡

1.没有网关:客户端直接访问我们的微服务,会需要在客户端配置很多的port,如果
user-service并发比较大,则无法完成负载均衡
2.有网关:客户端访问网关,网关来访问微服务,(网关可以和注册中心整合,通过服务名
称找到目标服务)这样只需要使用服务名称即可访问微服务,可以实现负载均衡,可
以实现token拦截,权限验证,限流等操作


 

网关的核心是一组过滤器,按照先后顺序来执行过滤操作

web三大组件 servlet、listener filter 过滤器

interceptor拦截器 springmvc主要拦截进入controller的请求

gateway的核心逻辑就是路由转发 +执行过滤器链

Gateway 和 zuul 的区别 ZuulFilter

Zuul 也是 web 网关,本质上就是一组过滤器,按照定义的顺序,来执行过滤操作 二者的区别:

1. 两者均是 web 网关,处理的是 http 请求

2. Gateway 是 springcloud 官方的组件,zuul 则是 netflix 的产品

springcloud,netflix ,alibaba(nacos,sentinel,dubbo zk,seata,rocketmq)

3. gateway 在 spring 的支持下,内部实现了限流、负载均衡等,扩展性也更强,但同时也 限制了仅适合于 Spring Cloud 套件。而 zuul 则可以扩展至其他微服务框架中,其内部没有 实现限流、负载均衡等。

4. Gateway(Netty NIO)很好的支持异步(spring5.x ,webFlux 响应式编程默认是异步的), 而 zuul1.0 仅支持同步 BIO zuul2.0 以后也支持异步了

Spring Cloud Gateway三大核心概念

Route(路由)(重点和eureka结合做动态路由)


路由信息的组成:
由一个ID、一个目的URL、一组断言工厂、一组Filter组成。
如果路由断言为真,说明请求URL和配置路由匹配。

 Predicate(断言)(就是一个返回bool的表达式)


Java8中的断言函数。lambda|
四大接口供给形,消费性,
函数型,断言型
Spring Cloud Gateway中的断言函数输入类型是Spring5.0框架中的
ServerWebExchange。Spring Cloud Gateway的断言函数允许开发者去定义匹配来自于
Http Request中的任何信息比如请求头和参数。

Filter(过滤)(重点)


一个标准的Spring WebFilter。
web三大组件(servlet listener filter)
mvc
interceptor
Spring Cloud Gateway中的Filter分为两种类型的Filter,分别是Gateway Filter和Global Filter。过滤器Filter将会对请求和响应进行修改处理。
一个是针对某一个路由的filter对某一个接口做限流
一个是针对全局的filter  token  ip黑名单

gateway网关是项目级别的,nginx是服务器级别的。

 nginx就像医院的前台,gateway是一个科室的前台。

快速入门

先建一个module,再在module上建包

 

新建一个包

 

gateway-server的配置 

 直接访问80端口+path即可转发请求至对应controller

网关的集群

再改nginx配置文件

 代码方式写路由

访问localhost/guochuang,会跳转对应uri

 代码方式写路由,和配置文件不冲突,两者可以共存

动态路由

如果一个服务有100个路径,只用配置文件写就很麻烦

解决:结合eureka实现动态路由

1)在gatewayserver里添加配置,添加eureka。

改为用应用名称 

 2)将服务注册到eureka中

启动应用,访问 使用应用名称/路径即可。(再上线新服务,网关不用重启)

predicate断言工厂的使用

断言就是匹配规则,匹配上了,返回结果。匹配不上,404。

 断言 after,在这个时间点之后,才能访问。可用于如双12零点之后才可以访问这种业务场景

 

过滤

 

黑名单拦截

 

token校验 

 

gateway集成redis做限流

 

什么是限流

通俗的说,限流就是限制一段时间内,用户访问资源的次数,减轻服务器压力,限流大致分为 两种:

1. IP 限流(5s 内同一个 ip 访问超过 3 次,则限制不让访问,过一段时间才可继续访问) 2. 请求量限流(只要在一段时间内(窗口期),请求次数达到阀值,就直接拒绝后面来的访问了, 过一段时间才可以继续访问)(粒度可以细化到一个 api(url),一个服务)

本次限流模型

限流模型:漏斗算法 ,令牌桶算法,窗口滑动算法 计数器算法

入不敷出

1)、所有的请求在处理之前都需要拿到一个可用的令牌才会被处理;

2)、根据限流大小,设置按照一定的速率往桶里添加令牌;

3)、桶设置最大的放置令牌限制,当桶满时、新添加的令牌就被丢弃或者拒绝; 4)、请求达到后首先要获取令牌桶中的令牌,拿着令牌才可以进行其他的业务逻辑,处理完 业务逻辑之后,将令牌直接删除; 5)、令牌桶有最低限额,当桶中的令牌达到最低限额的时候,请求处理完之后将不会删除令 牌,以此保证足够的限流;

Spring Cloud Gateway 已经内置了一个 RequestRateLimiterGatewayFilterFactory,我们 可以直接使用。 目前 RequestRateLimiterGatewayFilterFactory 的实现依赖于 Redis,所以我们还要引入 spring-boot-starter-data-redis-reactive。

引入依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis-reactive</artifactId>
</dependency>

创建配置类 RequestRateLimiterConfig

 配置文件

IP地址限流 

 连续访问,会被限流。429是请求限制的意思。

按照路径限制

总结

网关可以实现跨域,路由(动态路由,负载均衡)ip 黑名单拦截,Token 的校验,对请求进行过滤(请求 参数校验) 对响应做处理(状态码,响应头) 熔断 限流

微服务的网关,可以很好地将具体的服务和浏览器隔离开,只暴露网关的地址给到浏览器 在微服务网关中,可以很好的实现校验认证,负载均衡(lb),黑名单拦截,限流等

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

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

相关文章

OpenCV官方教程中文版 —— 直方图均衡化

OpenCV官方教程中文版 —— 直方图均衡化 前言一、原理二、 OpenCV 中的直方图均衡化三、 CLAHE 有限对比适应性直方图均衡化 前言 本小节我们要学习直方图均衡化的概念&#xff0c;以及如何使用它来改善图片的对比。 一、原理 想象一下如果一副图像中的大多是像素点的像素值…

无人值守机房浸水监测数据采集网关

机房动环监控支持水浸远程开关门 机房动环监控系统是保障机房设备安全和稳定运行的关键设备。 水浸检测&#xff1a;系统配备水浸传感器&#xff0c;可以监测机房内的水浸情况&#xff0c;一旦发现水浸&#xff0c;即刻发出报警信号。 远程开关门&#xff1a;在接收到水浸报警…

c++编译使用log4cplus

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、log4cplus是什么&#xff1f;二、使用步骤1.下载源代码2.开始配置1.配置介绍2.开始编译 3.cmake引用4.示例 总结 前言 C很强大&#xff0c;但是仍然有很多…

SOFAStack软件供应链安全产品解析——SCA软件成分分析

近年来&#xff0c;软件供应链安全相关攻击事件呈快速增长态势&#xff0c;造成的危害也越来越严重&#xff0c;为了保障软件供应链安全&#xff0c;各行业主管单位也出台了诸多政策及技术标准。基于内部多年的实践&#xff0c;蚂蚁数科金融级云原生PaaS平台SOFAStack发布完整的…

GEE案例——一个完整的火灾监测案例dNBR差异化归一化烧毁指数

差异化归一化烧毁指数 dNBR是"差异化归一化烧毁指数"的缩写。它是一种用于评估卫星图像中烧毁区域严重程度的遥感指数。dNBR值通过将火灾前的归一化烧毁指数(NBR)减去火灾后的NBR来计算得出。该指数常用于野火监测和评估。 dNBR(差异化归一化烧毁指数)是一种用…

linux安装node(含npm命令) 并配置淘宝镜像源

1. 下载压缩包 wget https://nodejs.org/dist/v16.14.0/node-v16.14.0-linux-x64.tar.xz # node14 https://nodejs.org/dist/v14.15.4/node-v14.15.4-linux-x64.tar.xz # 推荐将压缩包放置到/usr/local/node文件夹中安装 mv node-v16.14.0-linux-x64.tar.xz /usr/local/node …

MySQL几种方法的数据库备份

MySQL几种方法的数据库备份_mysql备份的几种方式-CSDN博客 MySQL有几个方法来备份 最近博客一直想写点。可是不知道写什么&#xff0c;感觉自己近期的知识没有什么添加&#xff0c;今天想到了一篇能够写的博客。曾经试过依据data目录备份MySQL。可是从来没有成功过。前几天帮助…

maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories

前言 略 说明 新设备上安装了mvn 3.8.5&#xff0c;编译新项目出错&#xff1a; [ERROR] Non-resolvable parent POM for com.admin.project:1.0: Could not transfer artifact com.extend.parent:pom:1.6.9 from/to maven-default-http-blocker (http://0.0.0.0/): Bl…

【网安大模型专题10.19】※论文5:ChatGPT+漏洞定位+补丁生成+补丁验证+APR方法+ChatRepair+不同修复场景+修复效果(韦恩图展示)

Keep the Conversation Going: Fixing 162 out of 337 bugs for $0.42 each using ChatGPT 写在最前面背景介绍自动程序修复流程Process of APR (automated program repair)1、漏洞程序2、漏洞定位模块3、补丁生成4、补丁验证 &#xff08;可以学习的PPT设计&#xff09;经典的…

k8s---深入解析pod

pod 1.为何使用pod?2.容器设计模式3. pod基本概念3.1 pod仍需关注的字段3.2 pod的生命周期 4.深入解析pod(四种Projected Volume&#xff0c;“投射数据卷)4.1 Secret4.2 ConfigMap4.3 Downward API4.4 ServiceAccountToken&#xff08;特殊secret&#xff09;4.5 pod 的健康检…

回归预测 | MATLAB实现BO-LSTM贝叶斯优化长短期神经网络多输入单输出回归预测

回归预测 | MATLAB实现BO-LSTM贝叶斯优化长短期神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现BO-LSTM贝叶斯优化长短期神经网络多输入单输出回归预测效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 MATLAB实现BO-LSTM贝叶斯优化长短期神经网络多输入…

SOLIDWORKS 2024新功能 3D CAD三维机械设计10大新功能

SOLIDWORKS 2024新增功能 - 3D CAD三维机械设计 10大新增功能 1. 先前版本的兼容性 •利用您订阅的 SOLIDWORKS&#xff0c;可将您的 SOLIDWORKS 设计作品保存为旧版本&#xff0c;与使用旧版本 SOLIDWORKS 的供应商无缝协作。 •可将零件、装配体和工程图保存为最新版本…

c++中 多线程执行时 线程的执行顺序不固定

C中多线程执行时&#xff0c;线程的执行顺序是不确定的。这是由于多线程的并发性质导致的。 在多线程程序中&#xff0c;多个线程可以同时执行&#xff0c;并且它们的执行顺序是由系统调度器决定的。系统调度器根据各种因素&#xff08;如线程的优先级、线程的状态等&#xff0…

ElasticSearch中关于Nasted嵌套查询的介绍:生动案例,通俗易懂,彻底吸收

题注&#xff1a;随着对ES接触的越来越深入&#xff0c;发现此前了解的ES知识点有点单薄&#xff0c;特此寻来ES知识点汇总成的一个思维导图&#xff0c;全面了解自己掌握了哪些&#xff0c;未掌握哪些。此外&#xff0c;作者斌并没有足够的精力学习ES全部的知识点&#xff0c;…

运行报错(三)git bash报错fatal: detected dubious ownership in repository at

报错现象 在运行git 命令时&#xff0c;出现报错 “fatal: detected dubious ownership in repository at” 报错原因 文件夹的所有者和现在的用户不一致 栗子&#xff1a; 文件夹的所有者是root&#xff0c;而当前用户是admin 解决方案 方法一、 将文件夹的所有者替换成ad…

网络原理之UDP协议

文章目录 前言应用层协议常见的几种数据格式1. xml2. JSON3. protobuffer 端口号传输层UDP 报文协议格式源端口号和目的端口号UDP 长度校验和 前言 前面我们学习了如何使用 UDP 数据报 和 TCP 流实现网络编程一个回显服务器&#xff0c;在知道了 UDP 和 TCP 协议的基本原理之后…

Unity性能优化一本通

文章目录 关于Unity性能优化一、资源部分&#xff1a;1、图片1.1、 图片尺寸越小越好1.2、使用2N次幂大小1.3、取消勾选Read/Write Enabled1.4、图片压缩1.5、禁用多余的Mip Map1.6、合并图集 2、模型2.1.限制模型面数2.2.限制贴图的大小2.3.禁用Read/Write Enables2.4.不勾选其…

行情分析——加密货币市场大盘走势(10.25)

目前大饼继续上涨&#xff0c;还没有看到震荡盘整的迹象。从MACD日线来看&#xff0c;连续绿色实心柱已经10天。现在有点上涨无力了&#xff0c;而现在入场做空性价比更高&#xff0c;看反弹到33000-32000。如果谨慎点&#xff0c;可以继续等待。 以太目前来看和大饼一样那个也…

Rabbitmq消息积压问题如何解决?

一、增加处理能力 优化系统架构、增加服务器资源、采用负载均衡等手段&#xff0c;以提高系统的处理能力和并发处理能力。通过增加服务器数量或者优化代码&#xff0c;确保系统能够及时处理所有的消息。 二、异步处理 将消息的处理过程设计为异步执行&#xff0c;即接收到消息…

Pandas 数据分析系列1--SeriesDataFrame数据结构详解

Pandas 概述 Pandas 是一个开源的数据分析和数据处理库,是基于 NumPy 开发的。它提供了灵活且高效的数据结构,使得处理和分析结构化、缺失和时间序列数据变得更加容易。其在数据分析和数据处理领域广泛应用,在金融、社交媒体、科学研究等领域都有很高的使用率和广泛的应用场…