springcloud 09 spring cloud gateway01 基本介绍
官网:https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/
1.什么是spring cloud gateway
1.1说明
spring cloud gateway是基于WebFlux框架实现的。而WebFlux底层使用了高性能的Reactor通信模式框架Netty。spring cloud gateway的目标是提供统一的路由方式,且基于filter链的方式提供网关的功能,如安全、监控/指标、限流。

1.2.WebFlux基本概念
传统的Wen框架,Struts,springmvc都是基于servlet的API和servlet容器运行的。在servlet3.1之后有了异步非阻塞的支持。而WebFlux是一个典型的非阻塞异步框架。它的核心是基于Reactor的相关API实现的。相对于传统的Web框架来说,它可以允许在如Netty,Undertow及支持Servlet3.0的容器上。非阻塞+函数式编程。
Spring WebFlux是spring5.0新引入的响应式框架,区别于springmvc它不需要依赖Servlet API,它是完全异步非阻塞的,并且基于Reactor来实现响应式流规范
2.有什么用
反向代理、鉴权、流量控制、熔断、日志监控....

3.spring cloud gateway的特性
spring cloud gateway基于异步非阻塞模型
基于SpringFramework5,Project Reactor,Springboot2.0构建的
动态路由:能够匹配任何请求属性
可以对路由指定断言-Predicate和过滤器-Filter
请求限流功能
支持路径重写
4.spring cloud gateway和Zuul的区别
1)Zuul 1.x是基于阻塞I/O的API 网关
2)Zuul 1.x基于Servlet2.5使用阻塞架构,它不支持任何长链接(如WebSocket),性能较差
3)Zuul 2.x理念更加先进,想基于Netty非阻塞且支持长链接,但springcloud还没有整合
4)spring cloud gateway基于SpringFramework5,Project Reactor,Springboot2.0,使用非阻塞API
5)spring cloud gateway还支持WebSocket,且和spring紧密集成,拥有更好的开发体验
5.zuul 运行模式

缺点:servlet是一个简单的网络IO模型,当请求进入Servlet Container时,Servlet Container时会为其绑定一个线程,在并发不高的场景下是适用的。但是并发量变高,线程数量就会上涨,而线程资源代价是昂贵的(上下文切换,内存消耗大),严重影响请求的处理时间。在一些简单的业务场景下,不希望为每个请求分配一个线程,只需要一个或者几个线程就可以处理极大并发的请求,这种场景下servlet模型就没有优势。
6.spring cloud gateway运行模型及工作原理
6.1模型

web请求通过一些匹配条件,定位到真正的服务节点,并且在转发的过程前后,进行一些精细化的过滤控制。predicate-断言就是匹配条件,filter就是过滤器
路由:是构建网关的基本模块,它由ID,目标URI,一系列的断言和过滤器组成,如果断言为true则匹配该路由
断言:开发人员可以匹配HTTP请求中的所有内容(例如请求头或请求参数),如果请求与断言相匹配则进行路由
过滤:指的是Spring框架中GatewayFilter的实例,使用过滤器,可以在请求被路由前或者之后对请求进行修改
6.2工作原理

客户端向Spring Cloud Gateway发出请求。在Gateway Handler Mapping中进行匹配,找到和请求相匹配的路由,将其发送到网关Web处理程序Gateway Web Handler。该处理程序通过指定的请求的过滤器链,将请求发送到实际的服务执行业务逻辑,然后返回。过滤器由虚线分隔的原因是,过滤器可以在发送代理请求之前和之后运行逻辑。所有“前置”过滤器逻辑均被执行。然后发出代理请求。发出代理请求后,将运行“后”过滤器逻辑。前置过滤器可以做参数校验。权限校验、流量控制、日志输出、协议转换等。在后置过滤器中可以做响应内容、响应头的修改、日志的输出、流量健康等。
springcloud 09 spring cloud gateway01 基本介绍的更多相关文章
- Spring Cloud Alibaba-MyShop-项目介绍
本节视频 [视频]Spring Cloud Alibaba-MyShop-项目介绍 开发环境 操作系统:Windows 10 Enterprise 开发工具:Intellij IDEA 数据库:MyS ...
- spring cloud之简单介绍
以下是来自官方的一篇简单介绍: spring Cloud provides tools for developers to quickly build some of the common patte ...
- 微服务SpringCloud之Spring Cloud Config配置中心Git
微服务以单个接口为颗粒度,一个接口可能就是一个项目,如果每个项目都包含一个配置文件,一个系统可能有几十或上百个小项目组成,那配置文件也会有好多,对后续修改维护也是比较麻烦,就和前面的服务注册一样,服务 ...
- 微服务实战SpringCloud之Spring Cloud Feign替代HTTP Client
简介 在项目中我们有时候需要调用第三方的API,微服务架构中这种情况则更是无法避免--各个微服务之间通信.比如一般的项目中,有时候我们会使用 HTTP Client 发送 HTTP 请求来进行调用,而 ...
- spring cloud 微服务介绍(转)
一.理解微服务 我们通过软件架构演进过程来理解什么是微服务,软件架构的发展经历了从单体结构.垂直架构.SOA架构到微服务架构的过程. 1. 单体架构 1.1 特点(1)所有的功能集成在一个项目工程 ...
- Spring Cloud常用组件介绍
一.Eureka (Netfix下) 云端服务发现,一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移. 二.Spring Cloud Config (Spring下) 配置 ...
- 微服务SpringCloud之Spring Cloud Config配置中心SVN
在回来的路上看到一个个的都抱着花,吃了一路的狗粮,原本想着去旁边的工业园里跑跑步呢,想想还是算了,人家过七夕,俺们过巴西.上一博客学习了Spring Cloud Config使用git作为配置中心,本 ...
- 微服务SpringCloud之Spring Cloud Config配置中心服务化
在前面两篇Spring Cloud Config配置中心的博客中都是需要指定配置服务的地址url:spring.cloud.config.uri,客户端都是直接调用配置中心的server端来获取配置文 ...
- SpringCloud之Spring Cloud Stream:消息驱动
Spring Cloud Stream 是一个构建消息驱动微服务的框架,该框架在Spring Boot的基础上整合了Spring Integrationg来连接消息代理中间件(RabbitMQ, Ka ...
- Spring Cloud 入门概括介绍
出处: 拜托!面试请不要再问我Spring Cloud底层原理 概述 毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术.不过大多数讲解还停留在对Spring ...
随机推荐
- 2022春每日一题:Day 26
题目:无聊的数列 区间增加等差序列,似乎不好维护,等差等差,那就差分呗,单点查询,更加肯定,直接差分,每次加了一个等差序列容易发现只需要对应的差分数组a[l]+=k,a[l+1]...a[r]+=d, ...
- gcc和g++,c和cpp
gcc对.c文件当成c处理,把.cpp文件当成c++处理 g++对.c和.cpp都当成c++处理 小心会遇到错误
- SpringCloud Alibaba(二) - Sentinel,整合OpenFeign,GateWay服务网关
1.环境准备 1.1Nacos 单机启动:startup.cmd -m standalone 1.2 Sentinel 启动命令:java -Dserver.port=8858 -Dcsp.senti ...
- MyBatis03:连接池及事务控制、xml动态SQL语句、多表操作
今日内容: mybatis中的连接池.事务控制[原理了解,应用会用] mybatis中连接池的使用及分析 mybatis中事务控制的分析 mybatis中基于xml配置的动态SQL语句使用[会用即可] ...
- 【大数据-课程】高途-天翼云侯圣文-Day3-实时计算原理解析
〇.老师及课程介绍 一.今日内容 二.实时计算理论解析 1.什么是实时计算 微批处理.流式处理.实时计算 水流和车流的例子 spark streaming就是一种微批处理,水满了才处理,进入下一个地方 ...
- ChatGPT杀疯了,这人工智能也太离谱了吧
转载请注明出处️ 作者:测试蔡坨坨 原文链接:caituotuo.top/2ac8440d.html 你好,我是测试蔡坨坨. 这几天被ChatGPT刷屏,各大网站平台都能看到关于它的文章和视频,上线短 ...
- Linux 下的输入输出和重定向示例
Linux 下的输入输出和重定向示例 作者:Grey 原文地址: 博客园:Linux 下的输入输出和重定向示例 CSDN:Linux 下的输入输出和重定向示例 说明 Linux 下的输入输出有如下三种 ...
- 【c#】从外部复制文本、图片到我的软件中的解决方案(支持ppt,qq等)
原文地址 https://www.cnblogs.com/younShieh/p/17010572.html 如果本文对你有所帮助,不妨点个关注和推荐呀,这是对笔者最大的支持~ 我们先考虑 ...
- Centos7下git最新版本安装
刚重新装了centos7最小版的系统,发现没有git,只好重新安装了,记录下以防忘记.(以下命令最好在root用户下执行,要么你有管理员权限也行,则需要在命令前加sudo) 安装方法有两种: 一.yu ...
- 再聊一下那 SQLSERVER 行不能跨页的事
一:背景 1. 讲故事 上一篇写完了之后,马上就有朋友留言对记录行的 8060byte 限制的疑惑,因为他的表记录存储了大量的文章,存储文章的字段类型用的是 nvarchar(max),长度很显然是超 ...