【spring_cloud_gateway】概述简介

简介: 【spring_cloud_gateway】概述简介

一、背景



最近公司要搞一套微服务,让我给服务做一个统一的安全认证、黑白名单等。经过简单的调研之后,选择了springcloud-gateway,其提供了统一的全局过滤器,刚好可以满足我的要求,其实这个全局过滤器类似于单机版的过滤器,在请求到达方法前做一些相应的业务。


二、gateway简介



1. 背景


Springcloud Gateway是Spring Cloud的一个全新项目,基于Spring5.0+SpringBoot2.0和Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的API路由管理方式,提供统一的路由方式且基于Filter链的方式提供了网关基本的功能,例如:安全,监控/指标,限流等。


2. 应用场景


  1. 反向代理:实际运行方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器
  2. 鉴权:是指通过全局过滤器来实现验证用户是否拥有访问系统的权利
  3. 流量控制:其原理是利用令牌桶算法对应用流量的 QPS 或并发线程数等指标进行统计,当达到指定的阈值时对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性
  4. 熔断:熔断机制是应对雪崩效应的一种微服务链路保护机制,当扇出链路的某个微服务不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回”错误”的响应信息
  5. 日志监控:对请求和响应进行监控并打印日志
  6. 编辑请求头和请求体:统一添加header信息,添加或修改请求参数
  7. 编辑响应体的参数:添加或修改响应参数
  8. 黑白名单:对请求的ip进行控制
  9. 路径重写:对访问路径进行编辑和重写 ...


3. 微服务架构中gateway在哪里


网关位置


4. gateway工作原理



客户端向Spring Cloud Gateway发出请求。如果Gateway处理程序映射确定一个请求与路由相匹配,它将被发送到Gateway Web处理程序。这个处理程序通过一个特定于该请求的过滤器链来运行该请求。过滤器被虚线划分的原因是,过滤器可以在代理请求发送之前和之后运行逻辑。所有的 "前 "过滤器逻辑都被执行。然后发出代理请求。在代理请求发出后,"后 "过滤器逻辑被运行。


三、gateway优点



  1. 动态路由:能够匹配任何请求属性
  2. 可以对路由指定Predicate(断言)和Filter(过滤器)
  3. 集成Hystrix的断路器功能
  4. 集成Spring Cloud服务发现功能
  5. 易于编写的Predicate(路由)和Filter(过滤器)
  6. 请求限流功能
  7. 支持路径重写
  8. 方便整合(属于spring cloud家族)


四、gateway和zuul的区别



  1. zuul 1.x,是一种基于阻塞I/O的API Gateway
  2. zuul 1.x基于Servlet 2.5使用阻塞架构,不支持任何长连接(如webSocket),其设计模式和Nginx较像,每次I/O都是从工作线程中选择一个执行,请求线程被阻塞到工作线程完成,但是差别是Nginx用C++实现,Zuul用Java实现,而JVM本身会有第一次加载较慢的情况,使得Zuul的性能相对较差。
  3. gateway建立在SpringFramework5、Project Reactor和SrpingBoot2之上,使用非阻塞API,其RPS(每秒请求数)是Zuul的1.6倍。
  4. gateway支持WebSocket,天生支持Spring
目录
相关文章
|
设计模式 开发框架 Java
Spring及工厂模式概述
Spring及工厂模式概述
119 8
|
7月前
|
前端开发 Java API
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档—— Swagger 简介
第6课介绍了在Spring Boot中集成Swagger2以展示在线接口文档的方法。随着前后端分离架构的发展,API文档成为连接前端与后端开发的重要纽带。然而,代码更新频繁导致文档难以同步维护,Swagger2解决了这一问题。通过Swagger,在线API文档不仅方便了接口调用方查看和测试,还支持开发者实时测试接口数据。本文使用Swagger 2.2.2版本,讲解如何在Spring Boot项目中导入并配置Swagger2工具,从而高效管理接口文档。
232 0
|
4月前
|
Java API 数据库
JPA简介:Spring Boot环境下的实践指南
上述内容仅是JPA在Spring Boot环境下使用的冰山一角,实际的实践中你会发现更深更广的应用。总而言之,只要掌握了JPA的规则,你就可以借助Spring Boot无比丰富的功能,娴熟地驾驶这台高性能的跑车,在属于你的程序世界里驰骋。
159 15
|
XML Java 数据格式
Spring5系列学习文章分享---第一篇(概述+特点+IOC原理+IOC并操作之bean的XML管理操作)
Spring5系列学习文章分享---第一篇(概述+特点+IOC原理+IOC并操作之bean的XML管理操作)
97 1
|
XML 监控 Java
Spring Cloud全解析:熔断之Hystrix简介
Hystrix 是由 Netflix 开源的延迟和容错库,用于提高分布式系统的弹性。它通过断路器模式、资源隔离、服务降级及限流等机制防止服务雪崩。Hystrix 基于命令模式,通过 `HystrixCommand` 封装对外部依赖的调用逻辑。断路器能在依赖服务故障时快速返回备选响应,避免长时间等待。此外,Hystrix 还提供了监控功能,能够实时监控运行指标和配置变化。依赖管理方面,可通过 `@EnableHystrix` 启用 Hystrix 支持,并配置全局或局部的降级策略。结合 Feign 可实现客户端的服务降级。
685 23
|
12月前
|
Java 数据库连接 数据库
让星星⭐月亮告诉你,SSH框架01、Spring概述
Spring是一个轻量级的Java开发框架,旨在简化企业级应用开发。它通过IoC(控制反转)和DI(依赖注入)降低组件间的耦合度,支持AOP(面向切面编程),简化事务管理和数据库操作,并能与多种第三方框架无缝集成,提供灵活的Web层支持,是开发高性能应用的理想选择。
131 1
|
11月前
|
JavaScript NoSQL Java
CC-ADMIN后台简介一个基于 Spring Boot 2.1.3 、SpringBootMybatis plus、JWT、Shiro、Redis、Vue quasar 的前后端分离的后台管理系统
CC-ADMIN后台简介一个基于 Spring Boot 2.1.3 、SpringBootMybatis plus、JWT、Shiro、Redis、Vue quasar 的前后端分离的后台管理系统
288 0
|
存储 XML Java
Spring简介
Spring简介
132 1
Spring简介
|
Java API Spring
Spring5入门到实战------1、Spring5框架概述、入门案例
这篇文章是Spring5框架的入门教程,概述了Spring框架的核心概念和特点,并通过一个创建普通Java类的案例,详细演示了从下载Spring核心Jar包、创建配置文件、编写测试代码到运行测试结果的完整流程,涵盖了Spring IOC容器的使用和依赖注入的基本用法。
|
前端开发 Java 数据库连接
Spring的工作原理(一)简介
Spring的工作原理(一)简介
160 1