|
|
|
@ -68,7 +68,7 @@ public class PolarisServiceRegistry implements ServiceRegistry<PolarisRegistrati
|
|
|
|
|
this.polarisDiscoveryHandler = polarisDiscoveryHandler;
|
|
|
|
|
this.staticMetadataManager = staticMetadataManager;
|
|
|
|
|
|
|
|
|
|
if (polarisDiscoveryProperties.isHeartbeatEnabled()) {
|
|
|
|
|
if (StringUtils.isNotBlank(polarisDiscoveryProperties.getHealthCheckUrl())) {
|
|
|
|
|
this.heartbeatExecutor = Executors
|
|
|
|
|
.newSingleThreadScheduledExecutor(new NamedThreadFactory("polaris-heartbeat"));
|
|
|
|
|
}
|
|
|
|
@ -95,26 +95,27 @@ public class PolarisServiceRegistry implements ServiceRegistry<PolarisRegistrati
|
|
|
|
|
instanceRegisterRequest.setRegion(staticMetadataManager.getRegion());
|
|
|
|
|
instanceRegisterRequest.setZone(staticMetadataManager.getZone());
|
|
|
|
|
instanceRegisterRequest.setCampus(staticMetadataManager.getCampus());
|
|
|
|
|
if (null != heartbeatExecutor) {
|
|
|
|
|
instanceRegisterRequest.setTtl(polarisDiscoveryProperties.getHeartbeatInterval());
|
|
|
|
|
}
|
|
|
|
|
instanceRegisterRequest.setTtl(polarisDiscoveryProperties.getHeartbeatInterval());
|
|
|
|
|
instanceRegisterRequest.setMetadata(registration.getMetadata());
|
|
|
|
|
instanceRegisterRequest.setProtocol(polarisDiscoveryProperties.getProtocol());
|
|
|
|
|
instanceRegisterRequest.setVersion(polarisDiscoveryProperties.getVersion());
|
|
|
|
|
try {
|
|
|
|
|
ProviderAPI providerClient = polarisDiscoveryHandler.getProviderAPI();
|
|
|
|
|
InstanceRegisterResponse instanceRegisterResponse = providerClient.register(instanceRegisterRequest);
|
|
|
|
|
registration.setInstanceId(instanceRegisterResponse.getInstanceId());
|
|
|
|
|
LOGGER.info("polaris registry, {} {} {}:{} {} register finished", polarisDiscoveryProperties.getNamespace(),
|
|
|
|
|
registration.getServiceId(), registration.getHost(), registration.getPort(),
|
|
|
|
|
staticMetadataManager.getMergedStaticMetadata());
|
|
|
|
|
|
|
|
|
|
if (null != heartbeatExecutor) {
|
|
|
|
|
InstanceRegisterResponse instanceRegisterResponse;
|
|
|
|
|
if (StringUtils.isBlank(polarisDiscoveryProperties.getHealthCheckUrl())) {
|
|
|
|
|
instanceRegisterResponse = providerClient.registerInstance(instanceRegisterRequest);
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
instanceRegisterResponse = providerClient.register(instanceRegisterRequest);
|
|
|
|
|
InstanceHeartbeatRequest heartbeatRequest = new InstanceHeartbeatRequest();
|
|
|
|
|
BeanUtils.copyProperties(instanceRegisterRequest, heartbeatRequest);
|
|
|
|
|
// Start the heartbeat thread after the registration is successful.
|
|
|
|
|
heartbeat(heartbeatRequest);
|
|
|
|
|
}
|
|
|
|
|
registration.setInstanceId(instanceRegisterResponse.getInstanceId());
|
|
|
|
|
LOGGER.info("polaris registry, {} {} {}:{} {} register finished", polarisDiscoveryProperties.getNamespace(),
|
|
|
|
|
registration.getServiceId(), registration.getHost(), registration.getPort(),
|
|
|
|
|
staticMetadataManager.getMergedStaticMetadata());
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e) {
|
|
|
|
|
LOGGER.error("polaris registry, {} register failed...{},", registration.getServiceId(), registration, e);
|
|
|
|
@ -188,24 +189,19 @@ public class PolarisServiceRegistry implements ServiceRegistry<PolarisRegistrati
|
|
|
|
|
heartbeatExecutor.scheduleWithFixedDelay(() -> {
|
|
|
|
|
try {
|
|
|
|
|
String healthCheckEndpoint = polarisDiscoveryProperties.getHealthCheckUrl();
|
|
|
|
|
// First determine whether health-check-url is configured.
|
|
|
|
|
// If configured, the service instance health check needs to be executed
|
|
|
|
|
// first.
|
|
|
|
|
// If the health check passes, the heartbeat will be reported.
|
|
|
|
|
// If it does not pass, the heartbeat will not be reported.
|
|
|
|
|
if (StringUtils.isNotBlank(healthCheckEndpoint)) {
|
|
|
|
|
if (!healthCheckEndpoint.startsWith("/")) {
|
|
|
|
|
healthCheckEndpoint = "/" + healthCheckEndpoint;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String healthCheckUrl = String.format("http://%s:%s%s", heartbeatRequest.getHost(),
|
|
|
|
|
heartbeatRequest.getPort(), healthCheckEndpoint);
|
|
|
|
|
|
|
|
|
|
if (!OkHttpUtil.get(healthCheckUrl, null)) {
|
|
|
|
|
LOGGER.error("backend service health check failed. health check endpoint = {}",
|
|
|
|
|
healthCheckEndpoint);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (!healthCheckEndpoint.startsWith("/")) {
|
|
|
|
|
healthCheckEndpoint = "/" + healthCheckEndpoint;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String healthCheckUrl = String.format("http://%s:%s%s", heartbeatRequest.getHost(),
|
|
|
|
|
heartbeatRequest.getPort(), healthCheckEndpoint);
|
|
|
|
|
|
|
|
|
|
if (!OkHttpUtil.get(healthCheckUrl, null)) {
|
|
|
|
|
LOGGER.error("backend service health check failed. health check endpoint = {}",
|
|
|
|
|
healthCheckEndpoint);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
polarisDiscoveryHandler.getProviderAPI().heartbeat(heartbeatRequest);
|
|
|
|
|