Skip to content

Commit c5af838

Browse files
authored
Merge pull request #71 from andrewshan/main
feat: 修改客户端ID为host+pid的格式
2 parents a6a48d9 + 0743048 commit c5af838

File tree

2 files changed

+30
-4
lines changed
  • polaris-common/polaris-client/src/main/java/com/tencent/polaris/client/api
  • polaris-plugins/polaris-plugins-observability/stat-prometheus/src/main/java/com/tencent/polaris/plugins/stat/prometheus/plugin

2 files changed

+30
-4
lines changed

polaris-common/polaris-client/src/main/java/com/tencent/polaris/client/api/SDKContext.java

+27-2
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import com.tencent.polaris.factory.config.ConfigurationImpl;
3939
import java.io.Closeable;
4040
import java.io.IOException;
41+
import java.lang.management.ManagementFactory;
4142
import java.net.InetAddress;
4243
import java.net.NetworkInterface;
4344
import java.net.Socket;
@@ -48,7 +49,6 @@
4849
import java.util.Enumeration;
4950
import java.util.List;
5051
import java.util.ServiceLoader;
51-
import java.util.UUID;
5252
import java.util.concurrent.atomic.AtomicBoolean;
5353
import org.slf4j.Logger;
5454
import org.slf4j.LoggerFactory;
@@ -103,7 +103,7 @@ public SDKContext(Configuration configuration, Manager plugins, ValueContext val
103103
this.configuration = configuration;
104104
this.plugins = plugins;
105105
this.valueContext = valueContext;
106-
this.valueContext.setClientId(UUID.randomUUID().toString());
106+
this.valueContext.setClientId(generateClientId(this.valueContext.getHost()));
107107
List<ServerServiceInfo> services = new ArrayList<>();
108108
//加载系统服务配置
109109
SystemConfig system = configuration.getGlobal().getSystem();
@@ -122,6 +122,31 @@ public SDKContext(Configuration configuration, Manager plugins, ValueContext val
122122
this.serverServices = Collections.unmodifiableCollection(services);
123123
}
124124

125+
private static String generateClientId(String host) {
126+
return host + "-" + getProcessId("0");
127+
}
128+
129+
private static String getProcessId(String fallback) {
130+
// Note: may fail in some JVM implementations
131+
// therefore fallback has to be provided
132+
133+
// something like '<pid>@<hostname>', at least in SUN / Oracle JVMs
134+
final String jvmName = ManagementFactory.getRuntimeMXBean().getName();
135+
final int index = jvmName.indexOf('@');
136+
137+
if (index < 1) {
138+
// part before '@' empty (index = 0) / '@' not found (index = -1)
139+
return fallback;
140+
}
141+
142+
try {
143+
return Long.toString(Long.parseLong(jvmName.substring(0, index)));
144+
} catch (NumberFormatException e) {
145+
// ignore
146+
}
147+
return fallback;
148+
}
149+
125150
public synchronized void init() throws PolarisException {
126151
if (!initialized.compareAndSet(false, true)) {
127152
return;

polaris-plugins/polaris-plugins-observability/stat-prometheus/src/main/java/com/tencent/polaris/plugins/stat/prometheus/plugin/PrometheusReporter.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ public void postContextInit(Extensions extensions) throws PolarisException {
5151
.getPluginConfig(getName(), PrometheusPushHandlerConfig.class);
5252
ServiceDiscoveryProvider provider = new ServiceDiscoveryProvider(extensions, config);
5353
String instanceId = extensions.getValueContext().getClientId();
54-
statInfoHandler = new PrometheusPushHandler(extensions.getValueContext().getHost(),
55-
config, provider, PUSH_DEFAULT_JOB_NAME, instanceId);
54+
String host = extensions.getValueContext().getHost();
55+
statInfoHandler = new PrometheusPushHandler(host, config, provider, PUSH_DEFAULT_JOB_NAME, instanceId);
5656
}
5757
}
5858

@@ -85,4 +85,5 @@ public void destroy() {
8585
statInfoHandler = null;
8686
}
8787
}
88+
8889
}

0 commit comments

Comments
 (0)