Skip to content

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

Open
@HelloLong

Description

@HelloLong

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。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions