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

相关推荐
REST_302717 小时前
告别Excel孤岛:一款任务链路可视化工具带来的真实改变
大数据·微服务·云计算·编辑器·excel·动态规划
beibeix201518 小时前
CppMicroServices 核心概念:动态服务注册与模块化系统
微服务·mitk
微三云 - 廖会灵 (私域系统开发)19 小时前
电商系统从单体到微服务拆分实践:拆什么、怎么拆、拆完后怎么办
微服务·云原生·架构
guslegend1 天前
领域驱动设计,微服务设计为什么要选择DDD?
微服务·云原生·架构
VortMall1 天前
全维度打磨细节体验,赋能商城稳定有序运营|VortMall 微服务商城 v1.3.11 版本发布
java·微服务·云原生·架构·商城系统·开源商城·vortmall
豆瓣鸡2 天前
Guava RateLimiter 限流实战:从令牌桶原理到 Nacos 动态配置
spring boot·微服务·nacos·guava
Wang's Blog3 天前
Go-Zero项目开发10: 微服务治理中心实现原理分析
开发语言·微服务·golang
xexpertS3 天前
分布式系统过载治理:如何通过较小服务控制请求节奏
微服务·自动化
野蛮人6号3 天前
黑马天机学堂系列问题之域名无法正常使用
java·spring cloud·天机学堂
爱学习的小可爱卢3 天前
SpringCloud——微服务实战:OpenFeign与Nacos服务调用详解
spring·spring cloud·微服务