Skip to content

Commit

Permalink
[ISSUE alibaba#9210] Remove calculation for ephemeral client's subscr…
Browse files Browse the repository at this point in the history
…ibers.
  • Loading branch information
pixystone committed Sep 26, 2022
1 parent a882e48 commit 9f6b505
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 45 deletions.
Expand Up @@ -6,7 +6,6 @@
import com.alibaba.nacos.naming.core.v2.client.impl.IpPortBasedClient;
import com.alibaba.nacos.naming.core.v2.pojo.InstancePublishInfo;
import com.alibaba.nacos.naming.core.v2.pojo.Service;
import com.alibaba.nacos.naming.pojo.Subscriber;
import org.apache.commons.lang.StringUtils;

import java.util.ArrayList;
Expand Down Expand Up @@ -42,9 +41,9 @@ public static String serviceKey(Service service) {
}

/**
* Calculate revision for client.
* Calculate hash of unique string built by client's metadata.
*/
public static int revision(Client client) {
public static int stringHash(Client client) {
String s = buildUniqueString(client);
if (s == null) {
return 0;
Expand Down Expand Up @@ -76,22 +75,7 @@ public static int hash(Client client) {
ip.getExtendDatum()
);
})
.collect(Collectors.toSet()),
client.getAllSubscribeService().stream()
.map(s -> {
Subscriber subscriber = client.getSubscriber(s);
String cluster = StringUtils.defaultIfBlank(subscriber.getCluster(), DEFAULT_CLUSTER_NAME);
String agent = StringUtils.defaultIfBlank(subscriber.getAgent(), StringUtils.EMPTY);
String app = StringUtils.defaultIfBlank(subscriber.getApp(), StringUtils.EMPTY);
return Objects.hash(serviceKey(s),
subscriber.getAddrStr(),
cluster,
agent,
app
);
})
.collect(Collectors.toSet())
);
.collect(Collectors.toSet()));
}

/**
Expand Down Expand Up @@ -130,22 +114,6 @@ public static String buildUniqueString(Client client) {
.append(convertMap2String(ip.getExtendDatum()))
.append(',');
});
sb.append('|');
client.getAllSubscribeService().stream()
.sorted(Comparator.comparing(DistroUtils::serviceKey))
.forEach(s -> {
Subscriber subscriber = client.getSubscriber(s);
String cluster = StringUtils.defaultIfBlank(subscriber.getCluster(), DEFAULT_CLUSTER_NAME);
String agent = StringUtils.defaultIfBlank(subscriber.getAgent(), StringUtils.EMPTY);
String app = StringUtils.defaultIfBlank(subscriber.getApp(), StringUtils.EMPTY);
sb.append(serviceKey(s)).append('_')
.append(subscriber.getAddrStr()).append('_')
.append(cluster).append('_')
.append(agent).append('_')
.append(app)
.append(',');
});
sb.append('|');
return sb.toString();
}

Expand Down
Expand Up @@ -71,19 +71,19 @@ private IpPortBasedClient buildClient(String ip, int port, boolean ephemeral, bo

@Test
public void testRevision0() {
assertEquals(-1402727264L, DistroUtils.revision(client0));
assertEquals(-1713189600L, DistroUtils.stringHash(client0));
}

@Test
public void testChecksum0() {
for (int i = 0; i < 3; i++) {
assertEquals("33bbc8d74e6220e3e2f12bc5292cf8e1", DistroUtils.checksum(client0));
assertEquals("2a3f62f84a4b6f2a979434276d546ac1", DistroUtils.checksum(client0));
}
}

@Test
public void testBuildUniqueString0() {
assertEquals("127.0.0.1:8848#false|testNamespace-1##testGroup-1@@testName-1##false_127.0.0.1:8848_1.0_true_true_DEFAULT_,||",
assertEquals("127.0.0.1:8848#false|testNamespace-1##testGroup-1@@testName-1##false_127.0.0.1:8848_1.0_true_true_DEFAULT_,",
DistroUtils.buildUniqueString(client0));
}

Expand All @@ -100,10 +100,10 @@ public void testBuildUniqueString1() {
assertEquals("128.0.0.1:8848#false|"
+ "testNamespace-1##testGroup-1@@testName-1##false_128.0.0.1:8848_2.0_false_false_DEFAULT_"
+ "Custom.metadataId1:abc,Custom.metadataId2:123,Custom.metadataId3:null,"
+ "publishInstanceEnable:false,publishInstanceWeight:2,,||",
+ "publishInstanceEnable:false,publishInstanceWeight:2,,",
DistroUtils.buildUniqueString(client));
assertEquals(1307283503L, DistroUtils.revision(client));
assertEquals("6e19890de2ec1b9177ad814a8f5df2fd", DistroUtils.checksum(client));
assertEquals(2128732271L, DistroUtils.stringHash(client));
assertEquals("ac9bf94dc4bd6a35e5ff9734868eafea", DistroUtils.checksum(client));
}

@Test
Expand All @@ -116,10 +116,10 @@ public void testBuildUniqueString2() {
metadata);
assertEquals("128.0.0.2:7001#true|"
+ "testNamespace-1##testGroup-1@@testName-1##true_128.0.0.2:7001_2.0_false_true_cluster1_"
+ "Custom.metadataId1:abc,publishInstanceEnable:true,publishInstanceWeight:2,,||",
+ "Custom.metadataId1:abc,publishInstanceEnable:true,publishInstanceWeight:2,,",
DistroUtils.buildUniqueString(client));
assertEquals(2084494023L, DistroUtils.revision(client));
assertEquals("259842c60964805917e7a17129f0ffab", DistroUtils.checksum(client));
assertEquals(775352583L, DistroUtils.stringHash(client));
assertEquals("82d8e086a880f088320349b895b22948", DistroUtils.checksum(client));
}

@Test
Expand All @@ -135,7 +135,7 @@ public void performanceTestOfChecksum() {
public void performanceTestOfRevision() {
long start = System.nanoTime();
for (int i = 0; i < n; i++) {
DistroUtils.revision(client1);
DistroUtils.stringHash(client1);
}
System.out.printf("Distro Verify Revision Performance: %.2f ivk/ns\n", ((double) System.nanoTime() - start) / n);
}
Expand Down

0 comments on commit 9f6b505

Please sign in to comment.