spring cloud gateway 实战

介绍

简介

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

SpringCloud Gateway 作为 Spring Cloud 生态系统中的网关,目标是替代 Zuul,在Spring Cloud 2.0以上版本中,没有对新版本的Zuul 2.0以上最新高性能版本进行集成,仍然还是使用的Zuul 2.0之前的非Reactor模式的老版本。而为了提升网关的性能,SpringCloud Gateway是基于WebFlux框架实现的,而WebFlux框架底层则使用了高性能的Reactor模式通信框架Netty

Spring Cloud Gateway 的目标,不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控/指标,和限流。

特性

官方介绍有以下特性 spring cloud gateway

  1. 基于 Spring Framework 5、Project Reactor 和 Spring Boot 2.0
  2. 能够匹配任何请求属性的路由
  3. 路由特定的断言和过滤器
  4. 断路器集成
  5. Spring Cloud DiscoveryClient 集成
  6. 易于编写断言和过滤器
  7. 请求速率限制
  8. 路径重写

名词解释

路由(Route):网关的基本构建块。它由 ID、目标 URI、断言集合和过滤器集合定义。如果聚合断言为真,则匹配路由。

断言(Predicate):这是一个Java 8 函数谓词。输入类型是Spring Framework ServerWebExchange。这使您可以匹配来自 HTTP 请求的任何内容,例如标头或参数。

过滤器(Filter):这些是GatewayFilter使用特定工厂构建的实例。在这里,您可以在发送下游请求之前或之后修改请求和响应。

工作原理

spring cloud gateway 工作原理
客户端向 Spring Cloud Gateway 发出请求。如果网关处理程序映射确定请求与路由匹配,则将其发送到网关 Web 处理程序。此处理程序通过特定于请求的过滤器链运行请求。过滤器被虚线分隔的原因是过滤器可以在发送代理请求之前和之后运行逻辑。执行所有“预”过滤器逻辑。然后进行代理请求。发出代理请求后,将运行“post”过滤器逻辑。
在没有端口的路由中定义的 URI 分别获得 HTTP 和 HTTPS URI 的默认端口值 80 和 443。

项目搭建

创建父级工程

pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.yml</groupId>
  <artifactId>yml-root</artifactId>
  <packaging>pom</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>yml-root</name>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <fastjson.version>1.2.78</fastjson.version>
    <spring.boot.version>2.4.11</spring.boot.version>
    <spring.cloud.version>2020.0.1</spring.cloud.version>
    <spring.cloud.alibaba.version>2021.1</spring.cloud.alibaba.version>
    <mybatis.spring.boot.version>2.2.0</mybatis.spring.boot.version>
    <pagehelper.spring.boot.version>1.4.0</pagehelper.spring.boot.version>
    <druid.spring.boot.version>1.2.8</druid.spring.boot.version>
    <mysql.java.version>8.0.26</mysql.java.version>
    <swagger.spring.boot>2.0.1.RELEASE</swagger.spring.boot>
  </properties>

  <dependencies>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>${fastjson.version}</version>
    </dependency>

  </dependencies>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-alibaba-dependencies</artifactId>
        <version
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring Cloud GatewaySpring团队独立开发的一个网关组件,它可以实现整个微服务的统一管理,并支持微服务的负载均衡。通过引入Spring Cloud Gateway的依赖,可以在微服务应用中使用它来处理请求转发和全局处理等功能。\[1\]\[2\] 在实战中,可以按照以下步骤来使用Spring Cloud Gateway: 1. 引入Spring Cloud Gateway的依赖:在项目的pom.xml文件中添加Spring Cloud Gateway的依赖配置。 2. 配置路由规则:在项目的配置文件中配置路由规则,指定请求的路径和目标微服务的地址。 3. 启动网关应用:启动Spring Cloud Gateway应用,使其成为微服务的入口。 4. 测试请求转发:通过访问网关的地址,测试请求是否能够正确转发到目标微服务。 通过以上步骤,可以实现对微服务的统一管理和请求转发,并且可以在网关中进行一些全局处理,如跨域配置、Xss攻击配置、统一认证和鉴权等。这样可以更好地治理和管理我们的微服务。 #### 引用[.reference_title] - *1* *2* [(五)SpringCloud系列——网关springcloud gateway实战](https://blog.csdn.net/yprufeng/article/details/117823484)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值