06、ClusterResolver集群解析器源码分析

文章目录

    • 1.结论:
  • 2.源码分析
  • 2.1.ClusterResolver集群解析器负责解析配置的EurekaServer地址
  • 2.2 EurekaClient使用了ClusterResolver的两个实现类ZoneAffinityClusterResolver和AsyncResolver来实现注册功能
  • 2.3.在DiscoveryClient初始化的时候实例化ZoneAffinityClusterResolver,然后调用getClusterEndpoints,之后将值赋值到AsyncResolver(ClosableResolver)供服务使用,将ClosableResolver赋值给EurekaHttpClientFactory
  • 2.4.ResolverUtils的randomize方法,根据IP地址生成不同的集合(修改集合顺序)。
  • 3.实验
  • 3.1.实验 一:不同ip获得不同的集群集合
  • 3.2实验2,同一ip下的应用在相同的Eureka上

1.结论:

Eureka根据IP地址将defaultZone: http://peer2:8002/eureka/,http://peer1:8001/eureka/生成不同的集合

2.源码分析

2.1.ClusterResolver集群解析器负责解析配置的EurekaServer地址

eureka:
  client:
    serviceUrl:
      defaultZone: http://peer2:8002/eureka/,http://peer1:8001/eureka/

public interface ClusterResolver<T extends EurekaEndpoint> {
   
     
    String getRegion();
    List<T> getClusterEndpoints();
}

2.2 EurekaClient使用了ClusterResolver的两个实现类ZoneAffinityClusterResolver和AsyncResolver来实现注册功能

public class ZoneAffinityClusterResolver implements ClusterResolver<AwsEndpoint> {
   
     

public class AsyncResolver<T extends EurekaEndpoint> implements ClosableResolver<T> {
   
     

2.3.在DiscoveryClient初始化的时候实例化ZoneAffinityClusterResolver,然后调用getClusterEndpoints,之后将值赋值到AsyncResolver(ClosableResolver)供服务使用,将ClosableResolver赋值给EurekaHttpClientFactory

//初始化DiscoveryClient
@Singleton
public class DiscoveryClient implements EurekaClient {
   
     
    
    private final EurekaTransport eurekaTransport;
    
    private static final class EurekaTransport {
   
     
        private ClosableResolver bootstrapResolver;
        private TransportClientFactory transportClientFactory;
    }

    @Inject
    DiscoveryClient(ApplicationInfoManager applicationInfoManager, EurekaClientConfig config, DiscoveryClientOptionalArgs args,
                    Provider<BackupRegistry> backupRegistryProvider) {
   
     
        eurekaTransport = new EurekaTransport();
        scheduleServerEndpointTask(eurekaTransport, args);                
    }
    
    private void scheduleServerEndpointTask(EurekaTransport eurekaTransport,
                                            DiscoveryClientOptionalArgs args) {
   
     
         //实例化ZoneAffinityClusterResolver,然后调用getClusterEndpoints,之后将值赋值到AsyncResolver(ClosableResolver)
        eurekaTransport.bootstrapResolver = EurekaHttpClients.newBootstrapResolver(
                clientConfig,
                transportConfig,
                eurekaTransport.transportClientFactory,
                applicationInfoManager.getInfo(),
                applicationsSource
        );     

        if (clientConfig.shouldRegisterWithEureka()) {
   
     
            EurekaHttpClientFactory newRegistrationClientFactory = null;
            EurekaHttpClient newRegistrationClient = null;
            try {
   
     
                //将ClosableResolver赋值给EurekaHttpClientFactory
                newRegistrationClientFactory = EurekaHttpClients.registrationClientFactory(
                        eurekaTransport.bootstrapResolver,
                        eurekaTransport.transportClientFactory,
                        transportConfig
                );
                newRegistrationClient = newRegistrationClientFactory.newClient();
            } catch (Exception e) {
   
     
                logger.warn("Experimental transport initialization failure", e);
            }
            eurekaTransport.registrationClientFactory = newRegistrationClientFactory;
            eurekaTransport.registrationClient = newRegistrationClient;
        }                      
    }
}

public final class EurekaHttpClients {
   
     
    public static ClosableResolver<AwsEndpoint> newBootstrapResolver(
            final EurekaClientConfig clientConfig,
            final EurekaTransportConfig transportConfig,
            final TransportClientFactory transportClientFactory,
            final InstanceInfo myInstanceInfo,
            final ApplicationsResolver.ApplicationsSource applicationsSource)
    {
   
     
        // if all else fails, return the default
        return defaultBootstrapResolver(clientConfig, myInstanceInfo);
    }
    
    static ClosableResolver<AwsEndpoint> defaultBootstrapResolver(final EurekaClientConfig clientConfig,
                                                                  final InstanceInfo myInstanceInfo) {
   
     
        String[] availZones = clientConfig.getAvailabilityZones(clientConfig.getRegion());
        String myZone = InstanceInfo.getZone(availZones, myInstanceInfo);
        //初始化new ZoneAffinityClusterResolver
        ClusterResolver<AwsEndpoint> delegateResolver = new ZoneAffinityClusterResolver(
                new ConfigClusterResolver(clientConfig, myInstanceInfo),
                myZone,
                true
        );
        //调用ZoneAffinityClusterResolver的getClusterEndpoints计算新的initialValue
        List<AwsEndpoint> initialValue = delegateResolver.getClusterEndpoints();
        if (initialValue.isEmpty()) {
   
     
            String msg = "Initial resolution of Eureka endpoints failed. Check ConfigClusterResolver logs for more info";
            logger.error(msg);
        }
        //将initialValue值赋值给AsyncResolver
        return new AsyncResolver<>(
                EurekaClientNames.BOOTSTRAP,
                delegateResolver,
                initialValue,
                1,
                clientConfig.getEurekaServiceUrlPollIntervalSeconds() * 1000
        );
    }
    
}

public class ZoneAffinityClusterResolver implements ClusterResolver<AwsEndpoint> {
   
     

    private static final Logger logger = LoggerFactory.getLogger(ZoneAffinityClusterResolver.class);

    private final ClusterResolver<AwsEndpoint> delegate;
    private final String myZone;
    private final boolean zoneAffinity;

    /**
     * A zoneAffinity defines zone affinity (true) or anti-affinity rules (false).
     */
    public ZoneAffinityClusterResolver(ClusterResolver<AwsEndpoint> delegate, String myZone, boolean zoneAffinity) {
   
     
        this.delegate = delegate;
        this.myZone = myZone;
        this.zoneAffinity = zoneAffinity;
    }

    @Override
    public String getRegion() {
   
     
        return delegate.getRegion();
    }

    @Override
    public List<AwsEndpoint> getClusterEndpoints() {
   
     
        List<AwsEndpoint>[] parts = ResolverUtils.splitByZone(delegate.getClusterEndpoints(), myZone);
        List<AwsEndpoint> myZoneEndpoints = parts[0];
        List<AwsEndpoint> remainingEndpoints = parts[1];
        List<AwsEndpoint> randomizedList = randomizeAndMerge(myZoneEndpoints, remainingEndpoints);
        if (!zoneAffinity) {
   
     
            Collections.reverse(randomizedList);
        }

        if (logger.isDebugEnabled()) {
   
     
            logger.debug("Local zone={}; resolved to: {}", myZone, randomizedList);
        }

        return randomizedList;
    }

    private static List<AwsEndpoint> randomizeAndMerge(List<AwsEndpoint> myZoneEndpoints, List<AwsEndpoint> remainingEndpoints) {
   
     
        if (myZoneEndpoints.isEmpty()) {
   
     
            return ResolverUtils.randomize(remainingEndpoints);
        }
        if (remainingEndpoints.isEmpty()) {
   
     
            return ResolverUtils.randomize(myZoneEndpoints);
        }
        List<AwsEndpoint> mergedList = ResolverUtils.randomize(myZoneEndpoints);
        mergedList.addAll(ResolverUtils.randomize(remainingEndpoints));
        return mergedList;
    }
}

2.4.ResolverUtils的randomize方法,根据IP地址生成不同的集合(修改集合顺序)。

public final class ResolverUtils {
   
     
	public static <T extends EurekaEndpoint> List<T> randomize(List<T> list) {
   
     
	        List<T> randomList = new ArrayList<>(list);
	        if (randomList.size() < 2) {
   
     
	            return randomList;
	        }
	        Random random = new Random(LOCAL_IPV4_ADDRESS.hashCode());
	        int last = randomList.size() - 1;
	        for (int i = 0; i < last; i++) {
   
     
	            int pos = random.nextInt(randomList.size() - i);
	            if (pos != i) {
   
     
	                Collections.swap(randomList, i, pos);
	            }
	        }
	        return randomList;
	    }
 }

3.实验

3.1.实验 一:不同ip获得不同的集群集合

package com.example.demo.user;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

public class TestResolverUtils {
   
     
	public static void main(String[] args) {
   
     
		List<String> eurekaList = new ArrayList<>();
		eurekaList.add("http://eureak0/eureka");
		eurekaList.add("http://eureak1/eureka");
		eurekaList.add("http://eureak2/eureka");
		
		System.out.println("192.168.1.20"+randomize(eurekaList,"192.168.1.20"));
		System.out.println("192.168.1.21"+randomize(eurekaList,"192.168.1.21"));
		System.out.println("192.168.1.22"+randomize(eurekaList,"192.168.1.22"));
		System.out.println("192.168.1.23"+randomize(eurekaList,"192.168.1.23"));
		System.out.println("192.168.1.24"+randomize(eurekaList,"192.168.1.24"));
		
		System.out.println("192.168.1.25"+randomize(eurekaList,"192.168.1.25"));
		System.out.println("192.168.1.26"+randomize(eurekaList,"192.168.1.26"));
		System.out.println("192.168.1.27"+randomize(eurekaList,"192.168.1.27"));
		System.out.println("192.168.1.28"+randomize(eurekaList,"192.168.1.28"));
		System.out.println("192.168.1.29"+randomize(eurekaList,"192.168.1.29"));
		
		/**
		 *  192.168.1.20[http://eureak0/eureka, http://eureak1/eureka, http://eureak2/eureka]
			192.168.1.21[http://eureak1/eureka, http://eureak0/eureka, http://eureak2/eureka]
			192.168.1.22[http://eureak0/eureka, http://eureak1/eureka, http://eureak2/eureka]
			192.168.1.23[http://eureak0/eureka, http://eureak1/eureka, http://eureak2/eureka]
			192.168.1.24[http://eureak0/eureka, http://eureak1/eureka, http://eureak2/eureka]
			192.168.1.25[http://eureak0/eureka, http://eureak1/eureka, http://eureak2/eureka]
			192.168.1.26[http://eureak0/eureka, http://eureak1/eureka, http://eureak2/eureka]
			192.168.1.27[http://eureak1/eureka, http://eureak0/eureka, http://eureak2/eureka]
			192.168.1.28[http://eureak0/eureka, http://eureak1/eureka, http://eureak2/eureka]
			192.168.1.29[http://eureak2/eureka, http://eureak1/eureka, http://eureak0/eureka]
		 */
		
	}
	
	public static  List<String> randomize(List<String> list,String ip) {
   
     
        List<String> randomList = new ArrayList<>(list);
        if (randomList.size() < 2) {
   
     
            return randomList;
        }
        Random random = new Random(ip.hashCode());
        int last = randomList.size() - 1;
        for (int i = 0; i < last; i++) {
   
     
            int pos = random.nextInt(randomList.size() - i);
            if (pos != i) {
   
     
                Collections.swap(randomList, i, pos);
            }
        }
        return randomList;
    }
}

3.2实验2,同一ip下的应用在相同的Eureka上

背景:
背景一:一个主机Ip地址172.16.20.140

根据实验一172.16.20.140将会生成以下集合,ip上的实例将首先注册到peer1
172、 16.20.140[http://peer1:8001/eureka/,http://peer2:8002/eureka/];

背景二:两个Eureka

application-peer1.yml
spring:
  application:
    name: eureka

server:
  port: 8001

eureka:
  instance:
     appname: ${
   
     spring.application.name}
     hostname: peer1
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://peer2:8002/eureka/
 
 application-peer2.yml

spring:
  application:
    name: eureka

server:
  port: 8002

eureka:
  instance:
    appname: ${
   
     spring.application.name}
    hostname: peer2
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://peer1:8001/eureka/          

背景三:两个User实例注册到两个Eureka

user实例1:
spring:
  application:
    name: spring-cloud-user
      
server:
  port: 8082
    
eureka:
  client:
    serviceUrl:
      defaultZone: http://peer2:8002/eureka/,http://peer1:8001/eureka/

user实例2:
spring:
  application:
    name: spring-cloud-user
      
server:
  port: 8083
    
eureka:
  client:
    serviceUrl:
      defaultZone: http://peer2:8002/eureka/,http://peer1:8001/eureka/

观察1:启动两个Eureka,启动三个User实例观察是否注册到Peer1
*
*

观察结果:user两个实例都注册到了Peer1上

观察2:停止Peer2,观察是否两个User实例不收到影响,观察完成启动peer2

观察结果:peer2节点停止,两个User实例没有受到影响

观察3:停止Peer1,观察是否出现Peer1连接失败,重新连接到Peer2

观察结果:peer1节点停止,两个User实例都出现了连接peer1失败,重现建立peer1连接,再次失败,最后建立Peer2连接的情况。

故障开始时间:2019-10-28 14:58:26.357
故障转移时间:2019-10-28 14:58:27.492
故障转移时间为1s

user1日志

2019-10-28 14:58:25.475 [user] [DiscoveryClient-HeartbeatExecutor-0] DEBUG [com.netflix.discovery.shared.NamedConnectionPool] -Available capacity: 49 out of 50 [{
   
     }->http://peer1:8001][null]
2019-10-28 14:58:25.475 [user] [DiscoveryClient-HeartbeatExecutor-0] DEBUG [com.netflix.discovery.shared.NamedConnectionPool] -Creating new connection [{
   
     }->http://peer1:8001]
2019-10-28 14:58:26.357 [user] [DiscoveryClient-CacheRefreshExecutor-0] DEBUG [com.netflix.discovery.shared.MonitoredConnectionManager] -Released connection is not reusable.
2019-10-28 14:58:26.357 [user] [DiscoveryClient-CacheRefreshExecutor-0] DEBUG [com.netflix.discovery.shared.NamedConnectionPool] -Releasing connection [{
   
     }->http://peer1:8001][null]
2019-10-28 14:58:26.357 [user] [DiscoveryClient-CacheRefreshExecutor-0] DEBUG [com.netflix.discovery.shared.NamedConnectionPool] -Notifying no-one, there are no waiting threads
2019-10-28 14:58:26.357 [user] [DiscoveryClient-CacheRefreshExecutor-0] DEBUG [com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient] -Jersey HTTP GET http://peer1:8001/eureka//apps/delta?; statusCode=N/A
2019-10-28 14:58:26.360 [user] [DiscoveryClient-CacheRefreshExecutor-0] ERROR [com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient] -Request execution error
com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connect
	at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:187)
	at com.sun.jersey.api.client.filter.GZIPContentEncodingFilter.handle(GZIPContentEncodingFilter.java:123)
	at com.netflix.discovery.EurekaIdentityHeaderFilter.handle(EurekaIdentityHeaderFilter.java:27)
	at com.sun.jersey.api.client.Client.handle(Client.java:652)
	at com.sun.jersey.api.client.WebResource.handle(WebResource.java:682)
	at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74)
	at com.sun.jersey.api.client.WebResource$Builder.get(WebResource.java:509)
	at com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient.getApplicationsInternal(AbstractJerseyEurekaHttpClient.java:194)
	at com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient.getDelta(AbstractJerseyEurekaHttpClient.java:170)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$7.execute(EurekaHttpClientDecorator.java:152)
	at com.netflix.discovery.shared.transport.decorator.MetricsCollectingEurekaHttpClient.execute(MetricsCollectingEurekaHttpClient.java:73)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getDelta(EurekaHttpClientDecorator.java:149)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$7.execute(EurekaHttpClientDecorator.java:152)
	at com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient.execute(RedirectingEurekaHttpClient.java:89)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getDelta(EurekaHttpClientDecorator.java:149)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$7.execute(EurekaHttpClientDecorator.java:152)
	at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:119)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getDelta(EurekaHttpClientDecorator.java:149)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$7.execute(EurekaHttpClientDecorator.java:152)
	at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getDelta(EurekaHttpClientDecorator.java:149)
	at com.netflix.discovery.DiscoveryClient.getAndUpdateDelta(DiscoveryClient.java:1051)
	at com.netflix.discovery.DiscoveryClient.fetchRegistry(DiscoveryClient.java:933)
	at com.netflix.discovery.DiscoveryClient.refreshRegistry(DiscoveryClient.java:1455)
	at com.netflix.discovery.DiscoveryClient$CacheRefreshThread.run(DiscoveryClient.java:1422)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.ConnectException: Connection refused: connect
	at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:589)
	at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:120)
	at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:179)
	at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:144)
	at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:134)
	at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:612)
	at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:447)
	at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:884)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:117)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55)
	at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:173)
	... 29 common frames omitted
2019-10-28 14:58:26.360 [user] [DiscoveryClient-CacheRefreshExecutor-0] WARN  [com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient] -Request execution failure
2019-10-28 14:58:26.360 [user] [DiscoveryClient-CacheRefreshExecutor-0] DEBUG [com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient] -Created client for url: http://peer1:8001/eureka/
2019-10-28 14:58:26.361 [user] [DiscoveryClient-CacheRefreshExecutor-0] DEBUG [com.netflix.discovery.shared.MonitoredConnectionManager] -Get connection: {
   
     }->http://peer1:8001, timeout = 5000
2019-10-28 14:58:26.361 [user] [DiscoveryClient-CacheRefreshExecutor-0] DEBUG [com.netflix.discovery.shared.NamedConnectionPool] -[{
   
     }->http://peer1:8001] total kept alive: 0, total issued: 1, total allocated: 1 out of 200
2019-10-28 14:58:26.361 [user] [DiscoveryClient-CacheRefreshExecutor-0] DEBUG [com.netflix.discovery.shared.NamedConnectionPool] -No free connections [{
   
     }->http://peer1:8001][null]
2019-10-28 14:58:26.361 [user] [DiscoveryClient-CacheRefreshExecutor-0] DEBUG [com.netflix.discovery.shared.NamedConnectionPool] -Available capacity: 49 out of 50 [{
   
     }->http://peer1:8001][null]
2019-10-28 14:58:26.361 [user] [DiscoveryClient-CacheRefreshExecutor-0] DEBUG [com.netflix.discovery.shared.NamedConnectionPool] -Creating new connection [{
   
     }->http://peer1:8001]
2019-10-28 14:58:26.479 [user] [DiscoveryClient-HeartbeatExecutor-0] DEBUG [com.netflix.discovery.shared.MonitoredConnectionManager] -Released connection is not reusable.
2019-10-28 14:58:26.479 [user] [DiscoveryClient-HeartbeatExecutor-0] DEBUG [com.netflix.discovery.shared.NamedConnectionPool] -Releasing connection [{
   
     }->http://peer1:8001][null]
2019-10-28 14:58:26.479 [user] [DiscoveryClient-HeartbeatExecutor-0] DEBUG [com.netflix.discovery.shared.NamedConnectionPool] -Notifying no-one, there are no waiting threads
2019-10-28 14:58:26.479 [user] [DiscoveryClient-HeartbeatExecutor-0] DEBUG [com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient] -Jersey HTTP PUT http://peer1:8001/eureka//apps/SPRING-CLOUD-USER/BR-IT-A00966.bairong.ad.com:spring-cloud-user:8082; statusCode=N/A
2019-10-28 14:58:26.479 [user] [DiscoveryClient-HeartbeatExecutor-0] ERROR [com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient] -Request execution error
com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connect
	at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:187)
	at com.sun.jersey.api.client.filter.GZIPContentEncodingFilter.handle(GZIPContentEncodingFilter.java:123)
	at com.netflix.discovery.EurekaIdentityHeaderFilter.handle(EurekaIdentityHeaderFilter.java:27)
	at com.sun.jersey.api.client.Client.handle(Client.java:652)
	at com.sun.jersey.api.client.WebResource.handle(WebResource.java:682)
	at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74)
	at com.sun.jersey.api.client.WebResource$Builder.put(WebResource.java:529)
	at com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient.sendHeartBeat(AbstractJerseyEurekaHttpClient.java:102)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$3.execute(EurekaHttpClientDecorator.java:92)
	at com.netflix.discovery.shared.transport.decorator.MetricsCollectingEurekaHttpClient.execute(MetricsCollectingEurekaHttpClient.java:73)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.sendHeartBeat(EurekaHttpClientDecorator.java:89)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$3.execute(EurekaHttpClientDecorator.java:92)
	at com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient.execute(RedirectingEurekaHttpClient.java:89)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.sendHeartBeat(EurekaHttpClientDecorator.java:89)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$3.execute(EurekaHttpClientDecorator.java:92)
	at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:119)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.sendHeartBeat(EurekaHttpClientDecorator.java:89)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$3.execute(EurekaHttpClientDecorator.java:92)
	at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.sendHeartBeat(EurekaHttpClientDecorator.java:89)
	at com.netflix.discovery.DiscoveryClient.renew(DiscoveryClient.java:827)
	at com.netflix.discovery.DiscoveryClient$HeartbeatThread.run(DiscoveryClient.java:1383)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.ConnectException: Connection refused: connect
	at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:589)
	at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:120)
	at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:179)
	at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:144)
	at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:134)
	at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:612)
	at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:447)
	at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:884)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:117)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55)
	at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:173)
	... 26 common frames omitted
2019-10-28 14:58:26.480 [user] [DiscoveryClient-HeartbeatExecutor-0] WARN  [com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient] -Request execution failure
2019-10-28 14:58:26.480 [user] [DiscoveryClient-HeartbeatExecutor-0] DEBUG [com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient] -Created client for url: http://peer1:8001/eureka/
2019-10-28 14:58:26.480 [user] [DiscoveryClient-HeartbeatExecutor-0] DEBUG [com.netflix.discovery.shared.MonitoredConnectionManager] -Get connection: {
   
     }->http://peer1:8001, timeout = 5000
2019-10-28 14:58:26.480 [user] [DiscoveryClient-HeartbeatExecutor-0] DEBUG [com.netflix.discovery.shared.NamedConnectionPool] -[{
   
     }->http://peer1:8001] total kept alive: 0, total issued: 1, total allocated: 1 out of 200
2019-10-28 14:58:26.480 [user] [DiscoveryClient-HeartbeatExecutor-0] DEBUG [com.netflix.discovery.shared.NamedConnectionPool] -No free connections [{
   
     }->http://peer1:8001][null]
2019-10-28 14:58:26.480 [user] [DiscoveryClient-HeartbeatExecutor-0] DEBUG [com.netflix.discovery.shared.NamedConnectionPool] -Available capacity: 49 out of 50 [{
   
     }->http://peer1:8001][null]
2019-10-28 14:58:26.480 [user] [DiscoveryClient-HeartbeatExecutor-0] DEBUG [com.netflix.discovery.shared.NamedConnectionPool] -Creating new connection [{
   
     }->http://peer1:8001]
2019-10-28 14:58:27.375 [user] [DiscoveryClient-CacheRefreshExecutor-0] DEBUG [com.netflix.discovery.shared.MonitoredConnectionManager] -Released connection is not reusable.
2019-10-28 14:58:27.375 [user] [DiscoveryClient-CacheRefreshExecutor-0] DEBUG [com.netflix.discovery.shared.NamedConnectionPool] -Releasing connection [{
   
     }->http://peer1:8001][null]
2019-10-28 14:58:27.376 [user] [DiscoveryClient-CacheRefreshExecutor-0] DEBUG [com.netflix.discovery.shared.NamedConnectionPool] -Notifying no-one, there are no waiting threads
2019-10-28 14:58:27.376 [user] [DiscoveryClient-CacheRefreshExecutor-0] DEBUG [com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient] -Jersey HTTP GET http://peer1:8001/eureka//apps/delta?; statusCode=N/A
2019-10-28 14:58:27.376 [user] [DiscoveryClient-CacheRefreshExecutor-0] ERROR [com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient] -Request execution error
com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connect
	at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:187)
	at com.sun.jersey.api.client.filter.GZIPContentEncodingFilter.handle(GZIPContentEncodingFilter.java:123)
	at com.netflix.discovery.EurekaIdentityHeaderFilter.handle(EurekaIdentityHeaderFilter.java:27)
	at com.sun.jersey.api.client.Client.handle(Client.java:652)
	at com.sun.jersey.api.client.WebResource.handle(WebResource.java:682)
	at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74)
	at com.sun.jersey.api.client.WebResource$Builder.get(WebResource.java:509)
	at com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient.getApplicationsInternal(AbstractJerseyEurekaHttpClient.java:194)
	at com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient.getDelta(AbstractJerseyEurekaHttpClient.java:170)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$7.execute(EurekaHttpClientDecorator.java:152)
	at com.netflix.discovery.shared.transport.decorator.MetricsCollectingEurekaHttpClient.execute(MetricsCollectingEurekaHttpClient.java:73)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getDelta(EurekaHttpClientDecorator.java:149)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$7.execute(EurekaHttpClientDecorator.java:152)
	at com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient.executeOnNewServer(RedirectingEurekaHttpClient.java:118)
	at com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient.execute(RedirectingEurekaHttpClient.java:79)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getDelta(EurekaHttpClientDecorator.java:149)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$7.execute(EurekaHttpClientDecorator.java:152)
	at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:119)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getDelta(EurekaHttpClientDecorator.java:149)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$7.execute(EurekaHttpClientDecorator.java:152)
	at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getDelta(EurekaHttpClientDecorator.java:149)
	at com.netflix.discovery.DiscoveryClient.getAndUpdateDelta(DiscoveryClient.java:1051)
	at com.netflix.discovery.DiscoveryClient.fetchRegistry(DiscoveryClient.java:933)
	at com.netflix.discovery.DiscoveryClient.refreshRegistry(DiscoveryClient.java:1455)
	at com.netflix.discovery.DiscoveryClient$CacheRefreshThread.run(DiscoveryClient.java:1422)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.ConnectException: Connection refused: connect
	at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:589)
	at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:120)
	at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:179)
	at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:144)
	at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:134)
	at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:612)
	at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:447)
	at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:884)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:117)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55)
	at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:173)
	... 30 common frames omitted
2019-10-28 14:58:27.377 [user] [DiscoveryClient-CacheRefreshExecutor-0] WARN  [com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient] -Request execution failure
2019-10-28 14:58:27.379 [user] [DiscoveryClient-CacheRefreshExecutor-0] DEBUG [com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient] -Created client for url: http://peer2:8002/eureka/
2019-10-28 14:58:27.379 [user] [DiscoveryClient-CacheRefreshExecutor-0] DEBUG [com.netflix.discovery.shared.MonitoredConnectionManager] -Get connection: {
   
     }->http://peer2:8002, timeout = 5000
2019-10-28 14:58:27.379 [user] [DiscoveryClient-CacheRefreshExecutor-0] DEBUG [com.netflix.discovery.shared.NamedConnectionPool] -[{
   
     }->http://peer2:8002] total kept alive: 0, total issued: 1, total allocated: 1 out of 200
2019-10-28 14:58:27.379 [user] [DiscoveryClient-CacheRefreshExecutor-0] DEBUG [com.netflix.discovery.shared.NamedConnectionPool] -No free connections [{
   
     }->http://peer2:8002][null]
2019-10-28 14:58:27.380 [user] [DiscoveryClient-CacheRefreshExecutor-0] DEBUG [com.netflix.discovery.shared.NamedConnectionPool] -Available capacity: 50 out of 50 [{
   
     }->http://peer2:8002][null]
2019-10-28 14:58:27.380 [user] [DiscoveryClient-CacheRefreshExecutor-0] DEBUG [com.netflix.discovery.shared.NamedConnectionPool] -Creating new connection [{
   
     }->http://peer2:8002]
2019-10-28 14:58:27.389 [user] [DiscoveryClient-CacheRefreshExecutor-0] DEBUG [com.netflix.discovery.shared.MonitoredConnectionManager] -Released connection is reusable.
2019-10-28 14:58:27.389 [user] [DiscoveryClient-CacheRefreshExecutor-0] DEBUG [com.netflix.discovery.shared.NamedConnectionPool] -Releasing connection [{
   
     }->http://peer2:8002][null]
2019-10-28 14:58:27.390 [user] [DiscoveryClient-CacheRefreshExecutor-0] DEBUG [com.netflix.discovery.shared.NamedConnectionPool] -Pooling connection [{
   
     }->http://peer2:8002][null]; keep alive indefinitely
2019-10-28 14:58:27.390 [user] [DiscoveryClient-CacheRefreshExecutor-0] DEBUG [com.netflix.discovery.shared.NamedConnectionPool] -Notifying no-one, there are no waiting threads
2019-10-28 14:58:27.390 [user] [DiscoveryClient-CacheRefreshExecutor-0] DEBUG [com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient] -Jersey HTTP GET http://peer2:8002/eureka//apps/delta?; statusCode=200
2019-10-28 14:58:27.390 [user] [DiscoveryClient-CacheRefreshExecutor-0] DEBUG [com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient] -Pinning to endpoint null
2019-10-28 14:58:27.390 [user] [DiscoveryClient-CacheRefreshExecutor-0] INFO  [com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient] -Request execution succeeded on retry #2
2019-10-28 14:58:27.391 [user] [DiscoveryClient-CacheRefreshExecutor-0] DEBUG [com.netflix.discovery.DiscoveryClient] -Got delta update with apps hashcode UP_2_
2019-10-28 14:58:27.391 [user] [DiscoveryClient-CacheRefreshExecutor-0] DEBUG [com.netflix.discovery.DiscoveryClient] -Added instance BR-IT-A00966.bairong.ad.com:spring-cloud-user:8083 to the existing apps in region null
2019-10-28 14:58:27.391 [user] [DiscoveryClient-CacheRefreshExecutor-0] DEBUG [com.netflix.discovery.DiscoveryClient] -Added instance BR-IT-A00966.bairong.ad.com:spring-cloud-user:8082 to the existing apps in region null
2019-10-28 14:58:27.391 [user] [DiscoveryClient-CacheRefreshExecutor-0] DEBUG [com.netflix.discovery.DiscoveryClient] -The total number of instances fetched by the delta processor : 2
2019-10-28 14:58:27.391 [user] [DiscoveryClient-CacheRefreshExecutor-0] DEBUG [com.netflix.discovery.DiscoveryClient] -The total number of all instances in the client now is 2
2019-10-28 14:58:27.392 [user] [DiscoveryClient-CacheRefreshExecutor-0] DEBUG [com.netflix.discovery.DiscoveryClient] -Completed cache refresh task for discovery. All Apps hash code is Local region apps hashcode: UP_2_, is fetching remote regions? false 
2019-10-28 14:58:27.491 [user] [DiscoveryClient-HeartbeatExecutor-0] DEBUG [com.netflix.discovery.shared.MonitoredConnectionManager] -Released connection is not reusable.
2019-10-28 14:58:27.491 [user] [DiscoveryClient-HeartbeatExecutor-0] DEBUG [com.netflix.discovery.shared.NamedConnectionPool] -Releasing connection [{
   
     }->http://peer1:8001][null]
2019-10-28 14:58:27.491 [user] [DiscoveryClient-HeartbeatExecutor-0] DEBUG [com.netflix.discovery.shared.NamedConnectionPool] -Notifying no-one, there are no waiting threads
2019-10-28 14:58:27.491 [user] [DiscoveryClient-HeartbeatExecutor-0] DEBUG [com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient] -Jersey HTTP PUT http://peer1:8001/eureka//apps/SPRING-CLOUD-USER/BR-IT-A00966.bairong.ad.com:spring-cloud-user:8082; statusCode=N/A
2019-10-28 14:58:27.491 [user] [DiscoveryClient-HeartbeatExecutor-0] ERROR [com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient] -Request execution error
com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connect
	at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:187)
	at com.sun.jersey.api.client.filter.GZIPContentEncodingFilter.handle(GZIPContentEncodingFilter.java:123)
	at com.netflix.discovery.EurekaIdentityHeaderFilter.handle(EurekaIdentityHeaderFilter.java:27)
	at com.sun.jersey.api.client.Client.handle(Client.java:652)
	at com.sun.jersey.api.client.WebResource.handle(WebResource.java:682)
	at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74)
	at com.sun.jersey.api.client.WebResource$Builder.put(WebResource.java:529)
	at com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient.sendHeartBeat(AbstractJerseyEurekaHttpClient.java:102)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$3.execute(EurekaHttpClientDecorator.java:92)
	at com.netflix.discovery.shared.transport.decorator.MetricsCollectingEurekaHttpClient.execute(MetricsCollectingEurekaHttpClient.java:73)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.sendHeartBeat(EurekaHttpClientDecorator.java:89)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$3.execute(EurekaHttpClientDecorator.java:92)
	at com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient.executeOnNewServer(RedirectingEurekaHttpClient.java:118)
	at com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient.execute(RedirectingEurekaHttpClient.java:79)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.sendHeartBeat(EurekaHttpClientDecorator.java:89)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$3.execute(EurekaHttpClientDecorator.java:92)
	at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:119)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.sendHeartBeat(EurekaHttpClientDecorator.java:89)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$3.execute(EurekaHttpClientDecorator.java:92)
	at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77)
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.sendHeartBeat(EurekaHttpClientDecorator.java:89)
	at com.netflix.discovery.DiscoveryClient.renew(DiscoveryClient.java:827)
	at com.netflix.discovery.DiscoveryClient$HeartbeatThread.run(DiscoveryClient.java:1383)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.ConnectException: Connection refused: connect
	at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:589)
	at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:120)
	at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:179)
	at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:144)
	at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:134)
	at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:612)
	at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:447)
	at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:884)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:117)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55)
	at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:173)
	... 27 common frames omitted
2019-10-28 14:58:27.491 [user] [DiscoveryClient-HeartbeatExecutor-0] WARN  [com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient] -Request execution failure
2019-10-28 14:58:27.492 [user] [DiscoveryClient-HeartbeatExecutor-0] DEBUG [com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient] -Created client for url: http://peer2:8002/eureka/
2019-10-28 14:58:27.492 [user] [DiscoveryClient-HeartbeatExecutor-0] DEBUG [com.netflix.discovery.shared.MonitoredConnectionManager] -Get connection: {
   
     }->http://peer2:8002, timeout = 5000
2019-10-28 14:58:27.492 [user] [DiscoveryClient-HeartbeatExecutor-0] DEBUG [com.netflix.discovery.shared.NamedConnectionPool] -[{
   
     }->http://peer2:8002] total kept alive: 1, total issued: 0, total allocated: 1 out of 200
2019-10-28 14:58:27.492 [user] [DiscoveryClient-HeartbeatExecutor-0] DEBUG [com.netflix.discovery.shared.NamedConnectionPool] -Getting free connection [{
   
     }->http://peer2:8002][null]
2019-10-28 14:58:27.497 [user] [DiscoveryClient-HeartbeatExecutor-0] DEBUG [com.netflix.discovery.shared.MonitoredConnectionManager] -Released connection is reusable.
2019-10-28 14:58:27.497 [user] [DiscoveryClient-HeartbeatExecutor-0] DEBUG [com.netflix.discovery.shared.NamedConnectionPool] -Releasing connection [{
   
     }->http://peer2:8002][null]
2019-10-28 14:58:27.497 [user] [DiscoveryClient-HeartbeatExecutor-0] DEBUG [com.netflix.discovery.shared.NamedConnectionPool] -Pooling connection [{
   
     }->http://peer2:8002][null]; keep alive indefinitely
2019-10-28 14:58:27.497 [user] [DiscoveryClient-HeartbeatExecutor-0] DEBUG [com.netflix.discovery.shared.NamedConnectionPool] -Notifying no-one, there are no waiting threads
2019-10-28 14:58:27.497 [user] [DiscoveryClient-HeartbeatExecutor-0] DEBUG [com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient] -Jersey HTTP PUT http://peer2:8002/eureka//apps/SPRING-CLOUD-USER/BR-IT-A00966.bairong.ad.com:spring-cloud-user:8082; statusCode=200
2019-10-28 14:58:27.498 [user] [DiscoveryClient-HeartbeatExecutor-0] DEBUG [com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient] -Pinning to endpoint null
2019-10-28 14:58:27.498 [user] [DiscoveryClient-HeartbeatExecutor-0] INFO  [com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient] -Request execution succeeded on retry #2

版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: