0

我们正在寻求迁移到 Spring Cloud Load Balancer 来替换 Ribbon。我们使用 Eureka 进行服务发现和注册。

看起来从 Spring Cloud Netflix 3.x 开始,Eureka 客户端模块中的 EurekaRibbonClientConfiguration 已被删除。

我们使用 deploymentContextBasedVipAddress 配置将我们的内部主机名映射到 Eureka 中注册的 vip 地址。

配置与此类似:

some-sevice-v1.ribbon.NIWSServerListClassName=com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList
some-sevice-v1.ribbon.DeploymentContextBasedVipAddresses=some_service-v1
some-sevice-v1.ribbon.NIWSServerListFilterClassName=com.netflix.loadbalancer.ServerListSubsetFilter

我们这样做是因为在 Eureka 注册的 vip 地址中包含一个_,从技术上讲,它是主机名的无效字符;Java URI 类将无法解析其中包含 a 的主机_。在这一点上,我们无法改变这一点。

所以我的问题是;这种类似的配置可以用 Spring Cloud Load Balancer 和 Spring Cloud Netflix 3.x 中的新 Eureka 客户端模块完成,我们可以在其中为 vip 地址提供别名?

4

1 回答 1

0

我们也面临同样的问题。目前,我们正在为我们的假客户使用以下解决方法:

@FeignClient(
    value = "${my.amazing.service.name:amazing-service-name-default}",
    contextId = "amazing-service",
    configuration = AmazingServiceClientConfiguration.class,
    path = "/amazing-service"
)
public interface AmazingServiceClient {
  ...
}

我们可以my.amazing.service.name按照同样的方式进行配置DeploymentContextBasedVipAddresses

这个问题还有一张公开的票:https ://github.com/spring-cloud/spring-cloud-commons/issues/951

希望这可以帮助。

于 2021-07-09T11:22:52.293 回答