从零开始的Spring Cloud Gateway指南:构建强大微服务架构

随着微服务架构的普及,API 网关的需求日渐上升。Spring Cloud Gateway 是一个基于 Spring Framework 5.0 和 Spring Boot 2.0 构建的 API 网关。因此,掌握 Spring Cloud Gateway 的使用非常重要。本文将从零开始,带你构建一个简单的微服务架构。

一、环境准备

在开始之前,确保你的开发环境中安装了以下软件:

  • JDK 1.8 或更高
  • Maven 3.x
  • IDE(如 IntelliJ IDEA 或 Eclipse)

接下来,我们将创建一个简单的项目结构,其中包含一个 API 网关和两个微服务。

二、创建微服务

1. 创建微服务A

在命令行中使用以下命令创建一个 Spring Boot 项目:

mvn archetype:generate -DgroupId=com.example.serviceA -DartifactId=serviceA -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

进入项目目录,修改 pom.xml 文件,加入 Spring Web 依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

创建一个简单的控制器 HelloController.java

package com.example.serviceA;

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 from Service A";
    }
}

2. 创建微服务B

同样方式创建微服务B:

mvn archetype:generate -DgroupId=com.example.serviceB -DartifactId=serviceB -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

编辑 pom.xml 文件,添加 Spring Web 依赖,并创建控制器 HelloController.java

package com.example.serviceB;

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 from Service B";
    }
}

三、创建 API 网关

创建 API 网关项目:

mvn archetype:generate -DgroupId=com.example.gateway -DartifactId=gateway -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

gateway 项目的 pom.xml 文件中,添加 Spring Cloud Gateway 和 Spring Boot Starter 依赖:

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-gateway</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

application.yml 文件中,配置路由:

spring:
  cloud:
    gateway:
      routes:
        - id: serviceA
          uri: http://localhost:8081
          predicates:
            - Path=/serviceA/**
          filters:
            - StripPrefix=1
        - id: serviceB
          uri: http://localhost:8082
          predicates:
            - Path=/serviceB/**
          filters:
            - StripPrefix=1

这里的配置指定了当请求路径以 /serviceA/serviceB 开头时,转发到相应的微服务。

四、启动服务

确保微服务A和微服务B分别运行在8081和8082端口。在 API 网关项目中,添加主类并启动应用程序:

package com.example.gateway;

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

@SpringBootApplication
public class GatewayApplication {

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

五、测试 API 网关

使用 Postman 或浏览器,访问以下 URL:

  • http://localhost:8080/serviceA/hello:应返回 Hello from Service A
  • http://localhost:8080/serviceB/hello:应返回 Hello from Service B

总结

本文展示了如何从零开始使用 Spring Cloud Gateway 构建一个简单的微服务架构。通过配置路由和过滤器,API 网关能够有效地管理和转发请求。后续可以进一步探索 Spring Cloud Gateway 的更多功能,如请求限流、身份验证等。这为构建现代微服务架构提供了强大的支持。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部