定制开发小程序21.Spring Cloud Gateway 简介

1. 定制开发小程序什么是网关

 

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

2.Spring Cloud Gateway 简介
它是 Spring Cloud 官方 提供的用来取代 zuul(netflix 的新一代网关组件
(zuul:1.0 , 2.0 ,zuul 的本质, 一组过滤器,根据自定义的过滤器顺序来执行,本质就是 web 组件 web 三大组件(监听器 过滤器 servlet 拦截 springmvc
Zuul1.0 使用的是 BIO (Blocking IO tomcat7.0 以前都是 BIO 性能一般
Zuul2.0 性能好 NIO
AIO 异步非阻塞 io   a+nio = aio = async + no blocking io
它基于 spring5.x,springboot2 .x 和 ProjectReactor 等技术。
它的目地是让 路由更加简单,灵活,还提供了一些强大的过滤器功能 ,例如:熔断、限流、重试,自义定过滤器等 token 校验 ip 黑名单等
SpringCloud Gateway作为Spring Cloud生态的网关,目标是替代Zuul,在SpringCloud2.0以上的版本中,没有对新版本的 zuul2.0 以上的最新高性能版本进行集成,仍然还是使用的 zuul1.x[可以看项目依赖找到]非 Reactor 模式的老版本。而为了提升网关的性能, SpringCloud Gateway 是基于 webFlux 框架实现的,而 webFlux 框架底层则使用了高性能 的 Reactor 模式通信框架的 Netty
NIO( 非阻塞式 io) BIO 你只需要了解网关能做什么? 网关里面写什么代码 就可以了

3.Spring Cloud Gateway 工作流程

客户端向 springcloud Gateway 发出请求,然后在 Gateway Handler Mapping 中找到与请求相匹配的路由,将其发送到 Gateway Web Handler。
Handler 再通过指定的过滤器来将请求发送到我们实际的服务的业务逻辑,然后返回。 过滤 器之间用虚线分开是因为过滤器可能会在发送爱丽请求之前【pre】或之后【post】执行业务 逻辑,对其进行加强或处理。
Filter 在 【pre】 类型的过滤器可以做参数校验、权限校验、流量监控、日志输出、协议转换等
在【post】 类型的过滤器中可以做响应内容、响应头的修改、日志的输出,流量监控等有着非常重要的作用。
总结:Gateway 的核心逻辑也就是 路由转发 + 执行过滤器链
4.Spring Cloud Gateway 三大核心概念
4.1 Route( 路由 ) (重点 和 eureka 结合做动态路由)
路由信息的组成:
由一个 ID、一个目的 URL、一组断言工厂、一组 Filter 组成。
如果路由断言为真,说明请求 URL 和配置路由匹配。
4.2 Predicate( 断言 ) (就是一个返回 bool 的表达式)
Java 8 中的断言函数。 lambda 四大接口 供给形,消费性,函数型,断言型
Spring Cloud Gateway 中 的 断 言 函 数 输 入 类 型 是 Spring 5.0 框 架 中 的
ServerWebExchange。Spring Cloud Gateway 的断言函数允许开发者去定义匹配来自于Http Request 中的任何信息比如请求头和参数。
4.3 Filter( 过滤 ) ( 重点 )
一个标准的 Spring WebFilter。
Web 三大组件 (servlet listener filter)                  mvc : interceptor
Spring Cloud Gateway 中的 Filter 分为两种类型的 Filter,分别是 Gateway Filter 和Global Filter。过滤器 Filter 将会对请求和响应进行修改处理。
一个是针对某一个路由 ( 路径 ) filter 对某一个接口做限流
一个是针对全局的 filter    token ip 黑名单
5.Nginx Gateway 的区别
Nginx 在做路由,负载均衡,限流之前,都有修改 nginx.conf 的配置文件,把需要负载均衡,路由,限流的规则加在里面。 Eg: 使用 nginx tomcat 的负载均衡
但是 gateway 不同, gateway 自动的负载均衡和路由 gateway eureka 高度集成,实现 自动的路由,和 Ribbon 结合,实现了负载均衡( lb ), gateway 也能轻易的实现限流和权 限验证。
Nginx (c )比 gateway java )的性能高一点。
本质的区别呢?
Nginx         ( 更大 服务器级别的 )
Gateway (项目级别的)

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发