千家信息网

Spring Cloud Gateway 网关尝鲜

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,Gateway 介绍Spring Cloud Gateway是Spring官方基于Spring 5.0,Spring Boot 2.0和Project Reactor等技术开发的网关,Spring C
千家信息网最后更新 2026年11月02日Spring Cloud Gateway 网关尝鲜

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链的方式提供了网关基本的功能,例如:安全,监控/埋点,和限流等。

可能有同学就要问了,不是已经有Zuul了吗,为什么又搞了一个网关,这更新的节奏确实很快哈,没精力还真学习不过来。

之所以新搞了一个网关,是因为Zuul基于servlet 2.5 (works with 3.x),使用阻塞API。它不支持任何长期的连接,如websocket。

Gateway建立在Spring Framework 5,Project Reactor和Spring Boot 2上,使用非阻塞API。支持Websockets,因为它与Spring紧密集成,所以它会是一个让开发者有更好体验的框架。当然性能的提升是肯定的,不然完全没必要重新搞一个啊,只不过Zuul2出来的太迟了,自己已经搞了一个,所以不太可能会将Zuul2集成到Spring Cloud中了。

关于性能这块的比较可以参考我周兄的文章《纠错帖:Zuul & Spring Cloud Gateway & Linkerd性能对比》

工作原理

如上图所示,客户端发送请求到Spring Cloud Gateway,Gateway Handler Mapping确定请求与路由匹配,则会将请求交给Gateway Web Handler处理。
在代理前后可以执行多个过滤器。最后代理到具体的服务。

项目集成Gateway

首先还是最基本的步骤,创建一个Maven项目,添加Gateway需要的依赖信息:

<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.0.1.RELEASEversion>
parent>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-dependenciesartifactId>
<version>Finchley.RELEASEversion>
<type>pomtype>
<scope>importscope>
dependency>
dependencies>
dependencyManagement>

<dependencies>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-gatewayartifactId>
dependency>
dependencies>

编写启动类:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* 网关启动入口
*
* @author yinjihuan
*
* @about http://cxytiandi.com/about
*
*/

@SpringBootApplication
public class GatewayApplication
{
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class, args);
}
}

简单路由示列

下面来实现一个最简单的转发功能,基于Path的匹配转发功能。

在resources下面建一个application.yml的文件, 内容如下:

server:
port: 8084
spring:
cloud:
gateway:
routes:
- id: path_route
uri: http://cxytiandi.com
predicates:
- Path=/course

当你访问http://localhost:8084/course的时候就会转发到http://cxytiandi.com/course,效果如下:

关于路由规则什么的我们后面再做介绍,本章只是先体验下Spring Cloud Gateway的功能,能够创建一个新的项目,成功启动就可以了,一步步来。

如果你的项目中包含了spring-cloud-starter-gateway,但你不想启动网关的时候可以通过下面的配置禁用掉:

application.properties

spring.cloud.gateway.enabled=false.

application.yml

spring:
cloud:
gateway:
enabled: false

上面讲解的是基于配置的方式来实现路由,还有一种方式是通过代码的方式来进行路由,比如:

@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder)
{
return builder.routes()
.route(r -> r.path("/course").uri("http://cxytiandi.com"))
.build();
}

示列代码:https://github.com/yinjihuan/spring-cloud/tree/master/fangjia-gateway

原文链接:https://mp.weixin.qq.com/s/92JDqjRcv452FfQUJxuRhw

网关 路由 方式 功能 项目 性能 代码 时候 代理 体验 开发 支持 服务 统一 配置 阻塞 有效 必要 上图 之所以 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技活动banner 互联网通讯科技 互联网 卓越科技 广州互联网络科技有限公司 壹账通互联网科技 亿账通互联网科技 无锡溥仪互联网科技有限公司 成都铂石互联网科技做什么的 杭州壁岐互联网科技有限公司 互联网公司黑科技创始人 互联网行业科技股 翼展科技 首家互联网医院 阿里互联网科技企业 互联网科技大赛获奖感言 为客找房互联网科技公司怎么样 互联网金融科技元年 杭州披云加互联网科技有限公司 互联网营销推广黑科技 平安好医生打造互联网科技医疗 科技互联网专业务虚会材料 互联网巨头反垄断金融科技 网络科技有限互联网 金融科技 互联网金融 互联网金融科技创新 互联网科技与管理 注册互联网科技公司经营范围大全 国大互联网教育科技有限公司工作 厦门江牛科技互联网 互联网公司属于科技吗 互联网科技对化妆品行业
0