微服务整合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 小时前
SpringCloud_day05
后端·spring·spring cloud
鬼先生_sir3 小时前
SpringCloud-GateWay网关
java·spring cloud·gateway
杰克尼7 小时前
springCloud(day09-Elasticsearch02)
java·后端·spring·spring cloud
杰克尼7 小时前
springCloud_day08(Elasticsearch)
java·spring·spring cloud
迷路爸爸1809 小时前
Docker 入门学习笔记 07:用一个多服务案例真正理解 Docker Compose
运维·笔记·学习·spring cloud·docker·容器·eureka
總鑽風9 小时前
数据一致性springcloud+rabbitmq+mysql+redis
mysql·spring cloud·rabbitmq
2301_771717219 小时前
微服务架构:多模块之间通信OpenFeign
微服务·架构·asp.net
indexsunny10 小时前
互联网大厂Java面试实录:Spring Boot到微服务的深入探讨
java·spring boot·微服务·面试·eureka·kafka·jwt
2301_7717172110 小时前
P2P 微服务项目架构完整解析
微服务·架构·p2p
mysuking1 天前
springboot与springcloud对应版本
java·spring boot·spring cloud