springcloud(六) --GateWay服务网关介绍和使用

Spring Cloud Gateway作为Spring Cloud生态的网关,基于Spring 5.0、Spring Boot 2.0和Project Reactor,提供路由管理、过滤器等功能。本文介绍了Gateway的核心概念,包括Route、Predicate和Filter,并详细讲解了配置路由、断言匹配以及过滤器的使用,如Path、Before/After、Cookie、Header、Host、Query和Method等路由断言工厂。同时,文章讨论了与Zuul的区别,强调了Gateway的非阻塞特性,支持WebSocket。此外,文中还提到了如何利用GlobalFilter实现全局过滤器功能。
摘要由CSDN通过智能技术生成

什么是GateWay

Spring Cloud Gateway 是 Spring 官方基于 Spring 5.0、Spring Boot 2.0 和 Project Reactor 等技术开发的网关,Spring Cloud Gateway 旨在为微服务架构提供一种简单有效的、统一的 API 路由管理方式。

Spring Cloud Gateway 作为 Spring Cloud 生态系中的网关,其目标是替代 Netflix Zuul,它不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全、监控/埋点和限流等。

Spring Cloud Gateway 依赖 Spring Boot 和 Spring WebFlux,基于 Netty 运行。它不能在传统的 servlet 容器中工作,也不能构建成 war 包。

1、核心
在 Spring Cloud Gateway 中有如下几个核心概念需要我们了解:
(1)Route
Route 是网关的基础元素,由 ID、目标 URI、断言、过滤器组成。当请求到达网关时,由 Gateway Handler Mapping 通过断言进行路由匹配(Mapping),当断言为真时,匹配到路由。

(2)Predicate
Predicate 是 Java 8 中提供的一个函数。输入类型是 Spring Framework ServerWebExchange。它允许开发人员匹配来自 HTTP 的请求,例如请求头或者请求参数。简单来说它就是匹配条件。

(3)Filter
Filter 是 Gateway 中的过滤器,可以在请求发出前后进行一些业务上的处理。

Spring Cloud Gateway 工作原理

Spring Cloud Gateway 工作原理
客户端向 Spring Cloud Gateway 发出请求,如果请求与网关程序定义的路由匹配,则该请求就会被发送到网关 Web 处理程序,此时处理程序运行特定的请求过滤器链。
过滤器之间用虚线分开的原因是过滤器可能会在发送代理请求的前后执行逻辑。所有 pre 过滤器逻辑先执行,然后执行代理请求;代理请求完成后,执行 post 过滤器逻辑。核心就是路由转发和过滤链

Spring Cloud Gateway与zuul的区别

1、Zuul 1.x是一个基于阻塞I/O的API Gateway

2、Zuul 1.x 基于servlet 2.5使用阻塞架构它不支持任何长连接(如WebSocket)Zuul的设计模式和Nginx较像,每次I/O操作都是从工作中选择一个执行,请求线程呗阻塞到工作线程完成,但是差别是Ngnix用C++实现,Zuul用java实现,而JVM本身会有第一次加载较慢的情况,使得Zuul的性能相当较差。

3、Zuul 2.x理念更先进,想基于Netty非阻塞和支持长连接,但springcloud目前还没有整合。

4、Spring cloud gateway建立在Spring Framework 5、Project Reactor 和 Spring boot 2之上,使用非阻塞API.

5.Spring cloud gateway还支持WebSocket,并且与Spring紧密集成拥有更好的开发体验。

配置使用gateway 路由(Route)

1、工程下创建 springcloud-gateway-9527 模块,导入pom依赖

 <!--gateway-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
        <!--eureka-client-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
         <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值