在Spring Cloud Gateway中将配置从功能区更改为Spring Cloud Load Balancer

问题描述

我具有带功能区的Spring Cloud Gateway的以下配置

server:
  port: 8080

spring:
  cloud:
    gateway:
      routes:
        - id: UserModule
          uri: lb://load-balanced-service-user
          predicates:
            - Path=/api/user/**
ribbon:
  eureka:
    enabled: false
Load-balanced-service-user:
  ribbon:
    listofServers: localhost:9999,localhost:8888

现在,我想卸下功能区,并更换为弹簧云负载平衡器。

添加

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

现在我还需要在application.yaml文件添加其他什么配置才能切换到Spring Cloud Load Balancer?我想在.yaml文件添加配置。我不想使用.yaml文件中配置的功能区破坏旧结构。

解决方法

如果您使用的是Hoxton发布火车,则需要将spring.cloud.loadbarancer.ribbon.enabled设置为false。据我所知,您使用的是服务器的静态列表,而不是服务注册表。在LoadBalancer中,您可以通过添加属性支持的SimpleDiscoveryClient来实现。请注意,为重现此类静态实例的功能区运行状况检查行为,我们建议使用Instance Health Check mechanism并禁用负载均衡器缓存,因为“实例运行状况”检查机制提供了一种替代缓存机制。