微服务整合Spring Cloud Gateway动态路由

前置

创建 Spring Cloud项目

参考:创建Spring Cloud Maven工程-CSDN博客

1. 创建一个maven jar类型项目

在idea中右键父工程-》New-》Module

创建一个maven工程

2. 引入相关依赖

在POM文件中引入下面的依赖

复制代码
<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>
    <parent>
        <groupId>org.szc</groupId>
        <artifactId>spring_cloud_demo</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>gateway</artifactId>
    <packaging>jar</packaging>

    <dependencies>
        <!--springcloud 依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
            </plugin>
        </plugins>
    </build>
</project>

3. 创建配置文件

在resources下创建bootstrap.yml配置文件

复制代码
server:
  port: 10005

spring:
  application:
    name: sky-gateway
  cloud:
    nacos:
      discovery:
        # 服务注册地址
        server-addr: 127.0.0.1:8848
      config:
        # 配置中心地址
        server-addr: ${spring.cloud.nacos.discovery.server-addr}
        # 配置中心的文件格式
        file-extension: yml

注意引入了nacos依赖后,在启动时会自动往从nacos服务器拉取下面3个配置文件,可以在启动日志看到

配置文件名称和服务名以及文件后缀是有关系的,默认是

服务名

服务名+后缀

服务名-激活的配置+后缀

在nacos上新建 sky-gateway.yml文件,如下图所示

文件内容为

复制代码
spring:
  cloud:
    gateway:
      discovery:
        locator:
          lowerCaseServiceId: true #服务名转小写
          #enabled: true #开启自动路由发现
      routes:
        - id: sky-system #id 唯一即可
          uri: lb://sky-system #lb://服务名,表示请求会负载均衡到sky-system服务
          predicates:
            - Path=/system/** # 表示访问/system开头的api会转发到sky-system服务
        - id: sky-product #id唯一即可
          uri: lb://sky-product # lb://服务名
          predicates:
            - Path=/product/** #表示访问/product开头的api会转发到sky-product服务

说明

下面的一段内容表示访问/system开头的api会转发到sky-system服务

uri: lb://sky-system #lb://服务名,表示请求会负载均衡到sky-system服务

predicates:

  • Path=/system/**

重启gateway

4. 测试

访问:http://localhost:10005/system/getUserBuy?userId=19 即可访问到sky-system的接口

5. 完成

相关推荐
霸道流氓气质1 小时前
微服务架构中多实例消息抢占问题:技术解析与解决方案
微服务·云原生·架构
漫谈数据智理4 小时前
IDS-RAM 如何支撑数据空间走向可
大数据·运维·微服务
vx-程序开发6 小时前
springboot旅游推介平台---附源码24175
java·spring boot·python·spring cloud·eclipse·django·idea
zhangjw341 天前
第41篇:微服务入门:架构理念+核心组件,理解微服务本质
微服务·云原生·架构
星期一研究室1 天前
从一条分割线开始,在文档中打造你的内容节奏
微服务·产品·设计
智码看视界1 天前
Day49-AI微服务化-将大模型能力封装为标准微服务
java·微服务·ai·架构·大模型·sse流式输出·ai中台
youngerwang2 天前
【软件系统架构案例分析每日深耕 Day 17】CBAM成本效益分析:微服务改造决策
微服务·系统架构·cbam·案例每日深耕·微服务改造
星期一研究室2 天前
告别文档「图片灾难排版」!3大黄金法则,让你的文档从杂乱无章到杂志风🧩
微服务·产品·设计
AI产品测评官3 天前
突破系统割裂困局:2026企业级AI招聘架构如何迈向“原生全流程”?
大数据·微服务·架构
Java成神之路-3 天前
集群架构 vs 分布式微服务架构:核心区别通俗拆解
分布式·微服务·架构