private static Jersey3ReplicationClient createReplicationClient(EurekaServerConfig config,
				ServerCodecs serverCodecs, String serviceUrl, Collection<ClientRequestFilter> additionalFilters) {
			String name = Jersey3ReplicationClient.class.getSimpleName() + ": " + serviceUrl + "apps/: ";

			EurekaJersey3Client jerseyClient;
			try {
				String hostname;
				try {
					hostname = new URL(serviceUrl).getHost();
				}
				catch (MalformedURLException e) {
					hostname = serviceUrl;
				}

				String jerseyClientName = "Discovery-PeerNodeClient-" + hostname;
				EurekaJersey3ClientImpl.EurekaJersey3ClientBuilder clientBuilder = new EurekaJersey3ClientImpl.EurekaJersey3ClientBuilder()
					.withClientName(jerseyClientName)
					.withUserAgent("Java-EurekaClient-Replication")
					.withEncoderWrapper(serverCodecs.getFullJsonCodec())
					.withDecoderWrapper(serverCodecs.getFullJsonCodec())
					.withConnectionTimeout(config.getPeerNodeConnectTimeoutMs())
					.withReadTimeout(config.getPeerNodeReadTimeoutMs())
					.withMaxConnectionsPerHost(config.getPeerNodeTotalConnectionsPerHost())
					.withMaxTotalConnections(config.getPeerNodeTotalConnections())
					.withConnectionIdleTimeout(config.getPeerNodeConnectionIdleTimeoutSeconds());

				if (serviceUrl.startsWith("https://") && "true"
					.equals(System.getProperty("com.netflix.eureka.shouldSSLConnectionsUseSystemSocketFactory"))) {
					clientBuilder.withSystemSSLConfiguration();
				}
				jerseyClient = clientBuilder.build();
			}
			catch (Throwable e) {
				throw new RuntimeException("Cannot Create new Replica Node :" + name, e);
			}

			String ip = null;
			try {
				ip = InetAddress.getLocalHost().getHostAddress();
			}
			catch (UnknownHostException e) {
				log.warn("Cannot find localhost ip", e);
			}

			Client jerseyApacheClient = jerseyClient.getClient();
			jerseyApacheClient.register(new Jersey3DynamicGZIPContentEncodingFilter(config));

			for (ClientRequestFilter filter : additionalFilters) {
				jerseyApacheClient.register(filter);
			}

			EurekaServerIdentity identity = new EurekaServerIdentity(ip);
			jerseyApacheClient.register(new EurekaIdentityHeaderFilter(identity));

			return new Jersey3ReplicationClient(jerseyClient, serviceUrl);
		}
{@link PeerEurekaNodes} which updates peers when /refresh is invoked. Peers are
updated only if <code>eureka.client.use-dns-for-fetching-service-urls</code> is
<code>false</code> and one of following properties have changed.
<p>
</p>
<ul>
<li><code>eureka.client.availability-zones</code></li>
<li><code>eureka.client.region</code></li>
<li><code>eureka.client.service-url.&lt;zone&gt;</code></li>
</ul>
spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/EurekaServerAutoConfiguration.java