Discovery icon indicating copy to clipboard operation
Discovery copied to clipboard

DiscoveryClientDecorator只有在版本偏好和版本故障转移打开后才有效么?

Open HelloLong opened this issue 3 years ago • 1 comments

DefaultDiscoveryEnabledAdapter.java

 if (StringUtils.isEmpty(versions)) {
           // 版本偏好,即非蓝绿灰度发布场景下,路由到老的稳定版本的实例
           if (versionPreferEnabled) {
               return strategyVersionFilter.apply(server);
           } else {
               return true;
           }
       } else {
           // 版本故障转移,即无法找到相应版本的服务实例,路由到老的稳定版本的实例
           if (versionFailoverEnabled) {
               List<ServiceInstance> instances = discoveryClient.getInstances(serviceId);

               boolean matched = false;
               for (ServiceInstance instance : instances) {
                   if (strategyVersionFilter.applyVersion(instance)) {
                       matched = true;

                       break;
                   }
               }

               if (!matched) {
                   return strategyVersionFilter.apply(server);
               }
           }
       }

当 spring.application.strategy.version.prefer.enabled 和 spring.application.strategy.version.failover.enabled 未开启时,无法走到 DiscoveryClientDecorator.getInstances 所以也无法走到 VersionFilterDiscoveryListener。

HelloLong avatar Jan 11 '22 09:01 HelloLong

不好意思,迟至今日回复。DiscoveryClientDecorator中版本偏好和版本故障转移,它只是获取实例列表的一种策略手段

HaojunRen avatar Feb 15 '22 04:02 HaojunRen