微服务整合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. 完成

相关推荐
我要去腾讯2 小时前
Springcloud核心组件之Sentinel详解
java·spring cloud·sentinel
小二·5 小时前
从零到上线:Spring Boot 3 + Spring Cloud Alibaba + Vue 3 构建高可用 RBAC 微服务系统(超详细实战)
vue.js·spring boot·微服务
cherry52305 小时前
Java大厂面试真题:Spring Boot + 微服务 + 缓存架构三轮技术拷问实录
jvm·spring boot·mysql·微服务·java面试·分布式架构·redis缓存
三口吃掉你6 小时前
微服务之网关(Spring Cloud Gateway)
java·网关·微服务·gateway
三口吃掉你6 小时前
微服务之OpenFeign、hystrix熔断降级、loadbalancer负载均衡
hystrix·微服务·负载均衡·openfeign
许心月7 小时前
坑#Spring Cloud Gateway#DataBufferLimitException
spring cloud
小坏讲微服务15 小时前
Docker-compose 搭建Maven私服部署
java·spring boot·后端·docker·微服务·容器·maven
suuijbd15 小时前
SpringCloud+Netty集群即时通讯项目
spring boot·分布式·spring cloud·java-rabbitmq·java-zookeeper
陈果然DeepVersion18 小时前
Java大厂面试真题:Spring Boot+微服务+AI智能客服三轮技术拷问实录(六)
java·spring boot·redis·微服务·面试题·rag·ai智能客服
Wang's Blog20 小时前
Nestjs框架: 微服务项目工程结构优化与构建方案
微服务·云原生·架构·nestjs