SpringCloud(5)--服务网关(GateWay)

系列链接:


服务网关

基本架构如下:

GateWay

Gateway 是在 Spring 生态系统之上构建的 API 网关服务,基于 Spring 5、Spring Boot 2 和 Project Reactor 等技术。它提供了一种简单且有效的方式来对 API 进行路由,并提供了一些强大的过滤器功能(熔断、限流、重试等)。

Gateway 的底层是基于 WebFlux 框架实现的,而webFlux底层使用netty通信(NIO)。

GateWay的特性:

  • 基于 Spring 5、Spring Boot 2 和 Project Reactor 进行构建
  • 动态路由,能够匹配任何请求属性
  • 可以对路由指定和边写 Predicate(断言)和 Filter(过滤器)
  • 集成 Hystrix 的断路器功能
  • 集成 Spring Cloud 服务发现功能
  • 请求限流功能、支持路径重写

GateWay与zuul的区别:

  • Zuul 1.x 是一个基于 Servlet 2.5 的阻塞架构,性能较差。而 2.x 版本基于 Netty 非阻塞并支持长连接,但与 Spring Cloud 目前还没整合。
  • Gateway 使用非阻塞 API,支持 WebSocket 且与 Spring 紧密集成。

相关概念

  • 路由: 路由是构建网关的基本模块,它由ID,目标URI,一系列的断言和过滤器组成,就是根据某些规则,将请求发送到指定服务上。

  • 断言: 断言用于匹配 HTTP 请求中的所有内容(请求头/请求参数),如果请求与断言相匹配则进行路由。

  • 过滤: 实现的过滤器可以在请求被路由前或者之后,对请求进行修改。


工作原理

在这里插入图片描述

客户端向 Gateway 发出请求,然后在 Gateway Handler Mapping 中找到与请求匹配的路由,将其发送到 Gateway Handler。Handler 再通过指定的过滤器链,然后将请求发送到实际的服务执行业务逻辑,最后返回。

过滤器链之间用虚线分开,是因为在发送请求之前或之后执行一些其他的业务逻辑:

  • 之前:参数校验、权限校验、流量监控、日志输出、协议转换等。
  • 之后:相应内容与响应头的修改、日志输出、流量监控等。

GateWay的使用

  1. 新建名称为 cloud-gateway-gateway9527 的Module

  2. pom文件

    		<!--gateway-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-gateway</artifactId>
            </dependency>
    
  3. 配置文件

            server:
              port: 9527
    
            spring:
              application:
                name: cloud-gateway
    
            
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值