【Spring实战】31 Spring Boot3 集成 Gateway 微服务网关

文章目录

1. 定义

Spring Cloud Gateway 是一个基于 Spring Framework 的开源网关服务,用于构建微服务架构中的 API 网关。它提供了一种灵活的方式来路由请求、过滤请求以及对请求进行各种操作,从而实现对微服务的集中控制、安全性、监控等功能。

2. 功能

Spring Cloud Gateway 提供了丰富的功能,包括但不限于:

  • 动态路由: 根据配置动态地将请求路由到不同的微服务实例
  • 过滤器: 实现对请求和响应的各种操作,例如认证、授权、请求转发、限流等
  • 集成负载均衡: 通过集成负载均衡器,将请求分发到多个服务实例,提高系统的性能和可用性
  • 断路器支持: 处理微服务中的故障和延迟,防止故障扩散
  • 统一认证和授权: 通过集成 Spring Security 等机制,实现对微服务的统一认证和授权管理
  • 监控和日志: 提供监控和日志功能,帮助理解网关的运行状况,分析请求流量

3. 示例代码

下面是一个简单的 Spring Boot 项目,演示如何集成 Spring Cloud Gateway。

1) 创建一个业务服务

首先,我们需要提前使用 Spring boot 创建一个普通的业务服务,并且创建一个 REST 接口,调用 /hello 返回一个 Hello world

pom.xml

xml 复制代码
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

application.yml

yml 复制代码
server:
  port: 9501
  servlet:
    context-path: /account

访问 API - HelloController.java

java 复制代码
package com.cheney.koala.account.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("hello")
    public String hello() {
        return "Hello world";
    }
}

启动类 - KoalaAccountApplication.java

java 复制代码
package com.cheney.koala.account;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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

2)创建一个网关服务

然后,我们需要再使用 Spring boot 创建一个网关服务,并且配置一下路由转发

pom.xml

xml 复制代码
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>2022.0.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-gateway</artifactId>
            </dependency>

application.yml

yml 复制代码
server:
  port: 9500

spring:
  cloud:
    gateway:
      routes:
        - id: account
          uri: http://127.0.0.1:9501
          predicates:
            - Path=/account/**

启动类 - KoalaGatewayApplication.java

java 复制代码
package com.cheney.koala.gateway;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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

这个简单的示例配置了一个路由,将以 "/account/**" 开头的请求转发到 "http://127.0.0.1:9501"。

3)启动服务

分别启动两个服务(业务服务和网关服务)

启动业务服务

启动网关服务

4)验证

首先,我们先直接访问业务服务,看一下效果

http://localhost:9501/account/hello

然后,我们再通过网关服务访问,看一下效果

http://localhost:9500/account/hello

通过这个简单的示例,你可以快速了解 Spring Cloud Gateway 的基本用法,以及如何配置和运行一个最最基本的网关服务。

4. 代码参考

https://gitee.com/cheney09/koala-system

结语

Spring Cloud Gateway 提供了一个强大而灵活的工具,用于构建微服务架构中的 API 网关。通过合理配置,你可以实现路由、过滤、负载均衡等功能,为微服务架构提供了更好的可维护性和可扩展性。在实际项目中,可以根据具体需求进一步定制和优化配置,以满足项目的特定要求。希望这篇博客能够帮助你入门 Spring Cloud Gateway。

相关推荐
杨半仙儿还未成仙儿1 小时前
Spring框架:Spring Core、Spring AOP、Spring MVC、Spring Boot、Spring Cloud等组件的基本原理及使用
spring boot·spring·mvc
一 乐1 小时前
学籍管理平台|在线学籍管理平台系统|基于Springboot+VUE的在线学籍管理平台系统设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·学习
IT学长编程3 小时前
计算机毕业设计 二手图书交易系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·spring boot·毕业设计·课程设计·毕业论文·计算机毕业设计选题·二手图书交易系统
艾伦~耶格尔4 小时前
Spring Boot 三层架构开发模式入门
java·spring boot·后端·架构·三层架构
man20174 小时前
基于spring boot的篮球论坛系统
java·spring boot·后端
Java探秘者5 小时前
Maven下载、安装与环境配置详解:从零开始搭建高效Java开发环境
java·开发语言·数据库·spring boot·spring cloud·maven·idea
攸攸太上5 小时前
Spring Gateway学习
java·后端·学习·spring·微服务·gateway
苹果醋35 小时前
大模型实战--FastChat一行代码实现部署和各个组件详解
java·运维·spring boot·mysql·nginx
潘多编程5 小时前
Spring Boot与GraphQL:现代化API设计
spring boot·后端·graphql
2401_857622666 小时前
Spring Boot新闻推荐系统:性能优化策略
java·spring boot·后端