Spring cloud spring cloud:覆盖功能区配置以实现区域关联

Spring cloud spring cloud:覆盖功能区配置以实现区域关联,spring-cloud,Spring Cloud,我希望在负载平衡期间实现区域关联。在日志中,我看到正在使用“DynamicServerListLoadBalancer”,根据其行为,循环规则似乎处于活动状态 我创建了自定义配置来覆盖RibbonClient配置,但它不起作用。这是正确的吗 public class CustomConfiguration { @Autowired private IClientConfig config; @Autowired ServerListFilter<Serv

我希望在负载平衡期间实现区域关联。在日志中,我看到正在使用“
DynamicServerListLoadBalancer
”,根据其行为,循环规则似乎处于活动状态

我创建了自定义配置来覆盖
RibbonClient配置
,但它不起作用。这是正确的吗

public class CustomConfiguration {

    @Autowired
    private IClientConfig config;

    @Autowired
    ServerListFilter<Server> filter;

    @Bean
    public ILoadBalancer ribbonLoadBalancer(IClientConfig config,
            ServerListFilter<Server> filter) {
        ZoneAwareLoadBalancer<Server> balancer = new ZoneAwareLoadBalancer<>(config);
        balancer.setFilter(filter);
        return balancer;
    }

    @Bean
    public ServerListFilter<Server> ribbonServerListFilter(IClientConfig config) {
        ZonePreferenceServerListFilter filter = new ZonePreferenceServerListFilter();
        filter.initWithNiwsConfig(config);
        return filter;
    }
}

@Configuration
@RibbonClient(name = "custom", configuration = CustomConfiguration.class)
public class CustomApplicationConfiguration {
}
公共类自定义配置{
@自动连线
私有IClientConfig配置;
@自动连线
服务器列表过滤器;
@豆子
公共ILoadBalancer ribbonLoadBalancer(IClientConfig配置,
服务器列表过滤器(过滤器){
ZoneAwareLoadBalancer=新的ZoneAwareLoadBalancer(配置);
平衡器。设置过滤器(过滤器);
回程平衡器;
}
@豆子
公共服务器列表筛选器功能区服务器列表筛选器(IClientConfig配置){
ZonePreferenceServerListFilter=新的ZonePreferenceServerListFilter();
filter.initWithNiwsConfig(config);
回流过滤器;
}
}
@配置
@RibbonClient(name=“custom”,configuration=CustomConfiguration.class)
公共类CustomApplicationConfiguration{
}

因此,一个
ZoneAwareLoadBalancer
扩展了
DynamicServerListLoadBalancer
,因此您在日志中看到的东西很可能来自
DynamicServerListLoadBalancer
。更改负载平衡器不会更改默认规则,即循环,它应该只是在区域中的实例之间循环。我有两个节点(节点1和节点2)部署服务。服务的客户端正在节点1中运行,如果服务启动,我希望客户端始终从节点1中选择服务。我认为您需要编写自定义规则以获得此类主/辅行为。是的,您是正确的。我看区域亲和力不起作用。我又向节点1添加了一个服务,在节点1上创建了两个服务。现在,当节点1上的客户机发送请求时,我认为它将位于节点1上的两个服务之间,但它以循环方式在节点1和2上的服务之间移动。这是否意味着spring-cloud不支持区域关联性。区域关联性是指基于同一AWS区域的服务器的关联性。这些服务器部署在哪里?