springcloud3 GateWay章节-Nacos+gateway动态路由负载均衡4

一 工程结构

1.1 工程

1.2 搭建gatewayapi工程

1.pom文件

复制代码
 <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13</version>
      <scope>test</scope>
    </dependency>
    <!--gateway-->
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-gateway</artifactId>
      <!--排除gateway 内部不兼容的 spring-webflux -->
      <exclusions>
        <!-- 排除web依赖-->
        <exclusion>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <!--包含了sleuth+zipkin-->
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-zipkin</artifactId>
    </dependency>
    <!--SpringCloud ailibaba nacos -->
    <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>

    <!--日常通用jar包配置-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
      <scope>runtime</scope>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

2.启动类

复制代码
@SpringBootApplication
@EnableDiscoveryClient
public class App 
{
    public static void main( String[] args )
    {
        SpringApplication.run(App.class, args);
        System.out.println("网关启动完毕.....");
    }
}

3.配置文件

复制代码
server:
  port: 7004
#服务名称
spring:
  application:
    name: mscloud-nacos-gateway-api7004
  zipkin:
    base-url: http://localhost:9411
    sleuth:
      sampler:
      #采样率值介于 0 到 1 之间,1 则表示全部采集
      probability: 1
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true #开启从注册中心动态创建路由的功能,利用微服务名进行路由
      routes:
        - id: payment_routh #payment_route    #路由的ID,没有固定规则但要求唯一,建议配合服务名
          #uri: http://localhost:8001          #匹配后提供服务的路由地址
          uri: lb://mscloud-cluster-providers #匹配后提供服务的路由地址 http://localhost:9007/payment/get/1?uname=aa  等价于 http://localhost:9003/payment/get/1
          predicates:                          ##浏览器上直接访问eureka的应用名不行:ttp://mscloud-cluster-providers/payment/get/1  这样访问不行
            - Path=/payment/get/**         # 断言,路径相匹配的进行路由

        - id: payment_routh2 #payment_route    #路由的ID,没有固定规则但要求唯一,建议配合服务名
          #uri: http://localhost:8001          #匹配后提供服务的路由地址
          uri: lb://nacos-payment-provider #匹配后提供服务的路由地址
          predicates:
            - Path=/payment/nacos/**         # 断言,路径相匹配的进行路由
            - After=2023-03-12T11:52:37.485+08:00[Asia/Shanghai]
            #- Cookie=username,zzyy
            #- Header=X-Request-Id, \d+  # 请求头要有X-Request-Id属性并且值为整数的正则表达式

1.3 测试

1.启动nacos,sleuth

2.启动gatewayapi,mscloud-nacos-provider7001,mscloud-nacos-provider7002

如图:

3.访问

多次刷新:7001和7002 不停的切换

相关推荐
摘星编程3 分钟前
原型模式深度解析:Java设计模式实战指南与克隆机制优化实践
java·设计模式·性能优化·原型模式·创建型模式·软件架构·对象克隆
狐凄9 分钟前
Python实例题:Python计算概率论
开发语言·python·概率论
liujing102329299 分钟前
Day09_刷题niuke20250609
java·c++·算法
无奈何杨10 分钟前
事件时间驱动的策略版本管理:风控系统中的关键设计抉择
java·后端·架构
程序员JerrySUN31 分钟前
Linux 内核内存管理子系统全面解析与体系构建
java·linux·运维
q5673152333 分钟前
分布式增量爬虫实现方案
开发语言·分布式·爬虫·python
勤奋的知更鸟39 分钟前
LLaMA-Factory和python版本的兼容性问题解决
开发语言·python·llama-factory
CIb0la41 分钟前
Ai自动补全编程工具:llama vscode
运维·开发语言·学习·测试工具·程序人生
风象南1 小时前
SpringBoot的5种签到打卡实现方案
java·spring boot·后端
1candobetter1 小时前
JAVA后端开发——多租户
java·开发语言