Skip to content

Commit 88fc58b

Browse files
author
fishtailfu
committed
feat: support set nacos instance weight
1 parent 9156599 commit 88fc58b

File tree

5 files changed

+26
-48
lines changed

5 files changed

+26
-48
lines changed

polaris-plugins/polaris-plugins-connector/connector-common/src/main/java/com/tencent/polaris/plugins/connector/common/constant/NacosConstant.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,7 @@ interface MetadataMapKey {
2727
String NACOS_EPHEMERAL_KEY = "nacos.ephemeral";
2828

2929
String NACOS_SERVICE_KEY = "nacos.service";
30+
31+
String NACOS_WEIGHT_KEY = "nacos.weight";
3032
}
3133
}

polaris-plugins/polaris-plugins-connector/connector-nacos/src/main/java/com/tencent/polaris/plugins/connector/nacos/NacosConnector.java

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,9 @@ private void initActually(InitContext ctx, ServerConnectorConfig connectorConfig
158158
if (metadata.containsKey(NACOS_EPHEMERAL_KEY)) {
159159
nacosContext.setEphemeral(Boolean.parseBoolean(metadata.get(NACOS_EPHEMERAL_KEY)));
160160
}
161+
if(metadata.containsKey(NACOS_WEIGHT_KEY)){
162+
nacosContext.setNacosWeight(Double.parseDouble(metadata.get(NACOS_WEIGHT_KEY)));
163+
}
161164
if (metadata.containsKey(PropertyKeyConst.NAMESPACE) && StringUtils.isNotEmpty(
162165
metadata.get(PropertyKeyConst.NAMESPACE))) {
163166
nacosContext.setNamespace(metadata.get(PropertyKeyConst.NAMESPACE));
@@ -408,9 +411,7 @@ private Instance buildRegisterNacosInstance(CommonProviderRequest req) {
408411
instance.setPort(req.getPort());
409412
instance.setIp(req.getHost());
410413
instance.setHealthy(true);
411-
if (Objects.nonNull(req.getWeight())) {
412-
instance.setWeight(req.getWeight());
413-
}
414+
instance.setWeight(nacosContext.getNacosWeight());
414415
Map<String, String> metadata = new HashMap<>(Optional.ofNullable(req.getMetadata())
415416
.orElse(Collections.emptyMap()));
416417

@@ -455,20 +456,4 @@ private Instance buildDeregisterNacosInstance(CommonProviderRequest req, String
455456
instance.setClusterName(nacosContext.getClusterName());
456457
return instance;
457458
}
458-
459-
protected static String analyzeNacosService(String service) {
460-
String[] detail = service.split("__");
461-
if (detail.length == 1) {
462-
return service;
463-
}
464-
return service.replaceFirst(detail[0] + "__", "");
465-
}
466-
467-
protected static String analyzeNacosGroup(String service) {
468-
String[] detail = service.split("__");
469-
if (detail.length == 1 || Objects.equals(detail[0], "")) {
470-
return DEFAULT_GROUP;
471-
}
472-
return detail[0];
473-
}
474459
}

polaris-plugins/polaris-plugins-connector/connector-nacos/src/main/java/com/tencent/polaris/plugins/connector/nacos/NacosContext.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,16 @@ public class NacosContext {
4343

4444
private Long nacosErrorSleep;
4545

46+
private double nacosWeight;
47+
48+
4649
public NacosContext(){
4750
groupName = DEFAULT_GROUP;
4851
clusterName = DEFAULT_CLUSTER_NAME;
4952
namespace = DEFAULT_NAMESPACE_ID;
5053
nacosErrorSleep = 1000L;
5154
ephemeral = false;
55+
nacosWeight = 1;
5256
}
5357

5458

@@ -100,15 +104,24 @@ public void setNacosErrorSleep(Long nacosErrorSleep) {
100104
this.nacosErrorSleep = nacosErrorSleep;
101105
}
102106

107+
public double getNacosWeight() {
108+
return nacosWeight;
109+
}
110+
111+
public void setNacosWeight(double nacosWeight) {
112+
this.nacosWeight = nacosWeight;
113+
}
114+
103115
@Override
104116
public String toString() {
105117
return "NacosContext{" +
106-
", groupName='" + groupName + '\'' +
118+
"groupName='" + groupName + '\'' +
107119
", clusterName='" + clusterName + '\'' +
108120
", namespace='" + namespace + '\'' +
109121
", ephemeral=" + ephemeral +
110122
", serviceName='" + serviceName + '\'' +
111123
", nacosErrorSleep=" + nacosErrorSleep +
124+
", nacosWeight=" + nacosWeight +
112125
'}';
113126
}
114127
}

polaris-plugins/polaris-plugins-connector/connector-nacos/src/main/java/com/tencent/polaris/plugins/connector/nacos/NacosService.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ public void asyncGetInstances(ServiceUpdateTask serviceUpdateTask) {
114114
.setPort(UInt32Value.of(nacosInstance.getPort()))
115115
.setHealthy(BoolValue.of(nacosInstance.isHealthy()))
116116
.setIsolate(BoolValue.of(!nacosInstance.isEnabled()))
117+
//nacos默认权重为1,polaris默认权重为100,因此需要乘100
117118
.setWeight(UInt32Value.of(100 * (int) nacosInstance.getWeight()));
118119
if (StringUtils.isNotBlank(nacosInstance.getInstanceId())) {
119120
instanceBuilder.setId(StringValue.of(nacosInstance.getInstanceId()));
@@ -128,11 +129,12 @@ public void asyncGetInstances(ServiceUpdateTask serviceUpdateTask) {
128129
// set metadata
129130
Map<String, String> metadata = nacosInstance.getMetadata();
130131
if (CollectionUtils.isNotEmpty(metadata)) {
131-
instanceBuilder.putAllMetadata(metadata)
132-
.putMetadata("nacos.cluster", nacosInstance.getClusterName())
133-
.putMetadata("nacos.group", nacosContext.getGroupName())
134-
.putMetadata("nacos.ephemeral", String.valueOf(nacosInstance.isEphemeral()));
132+
instanceBuilder.putAllMetadata(metadata);
135133
}
134+
instanceBuilder.putMetadata("nacos.cluster", nacosInstance.getClusterName())
135+
.putMetadata("nacos.group", nacosContext.getGroupName())
136+
.putMetadata("nacos.ephemeral", String.valueOf(nacosInstance.isEphemeral()));
137+
136138
String protocol = metadata.getOrDefault("protocol", "");
137139
String version = metadata.getOrDefault("version", "");
138140
if (StringUtils.isNotEmpty(protocol)) {

polaris-plugins/polaris-plugins-connector/connector-nacos/src/test/java/com/tencent/polaris/plugins/connector/nacos/NacosConnectorTests.java

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -22,29 +22,5 @@
2222

2323
public class NacosConnectorTests {
2424

25-
@Test
26-
public void testNacosAnalyze() {
27-
String serviceName;
28-
29-
serviceName = "GROUP__svc";
30-
Assert.assertEquals("svc", NacosConnector.analyzeNacosService(serviceName));
31-
Assert.assertEquals("GROUP", NacosConnector.analyzeNacosGroup(serviceName));
32-
33-
serviceName = "GROUP__svc_svc";
34-
Assert.assertEquals("svc_svc", NacosConnector.analyzeNacosService(serviceName));
35-
Assert.assertEquals("GROUP", NacosConnector.analyzeNacosGroup(serviceName));
36-
37-
serviceName = "GROUP_123__svc_svc";
38-
Assert.assertEquals("svc_svc", NacosConnector.analyzeNacosService(serviceName));
39-
Assert.assertEquals("GROUP_123", NacosConnector.analyzeNacosGroup(serviceName));
40-
41-
serviceName = "GROUP_123__svc__svc";
42-
Assert.assertEquals("svc__svc", NacosConnector.analyzeNacosService(serviceName));
43-
Assert.assertEquals("GROUP_123", NacosConnector.analyzeNacosGroup(serviceName));
44-
45-
serviceName = "__GROUP_123__svc__svc";
46-
Assert.assertEquals("GROUP_123__svc__svc", NacosConnector.analyzeNacosService(serviceName));
47-
Assert.assertEquals("DEFAULT_GROUP", NacosConnector.analyzeNacosGroup(serviceName));
48-
}
4925

5026
}

0 commit comments

Comments
 (0)