From 9f6b5051b9891ab75fc5b3226b63ccd1ac60205c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E8=BE=B0?= Date: Thu, 10 Feb 2022 13:45:21 +0800 Subject: [PATCH] [ISSUE #9210] Remove calculation for ephemeral client's subscribers. --- .../nacos/naming/utils/DistroUtils.java | 38 ++----------------- .../nacos/naming/utils/DistroUtilsTest.java | 20 +++++----- 2 files changed, 13 insertions(+), 45 deletions(-) diff --git a/naming/src/main/java/com/alibaba/nacos/naming/utils/DistroUtils.java b/naming/src/main/java/com/alibaba/nacos/naming/utils/DistroUtils.java index cf938cab9ad..e1196bf233c 100644 --- a/naming/src/main/java/com/alibaba/nacos/naming/utils/DistroUtils.java +++ b/naming/src/main/java/com/alibaba/nacos/naming/utils/DistroUtils.java @@ -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; @@ -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; @@ -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())); } /** @@ -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(); } diff --git a/naming/src/test/java/com/alibaba/nacos/naming/utils/DistroUtilsTest.java b/naming/src/test/java/com/alibaba/nacos/naming/utils/DistroUtilsTest.java index 402eed10a65..b552975ef2b 100644 --- a/naming/src/test/java/com/alibaba/nacos/naming/utils/DistroUtilsTest.java +++ b/naming/src/test/java/com/alibaba/nacos/naming/utils/DistroUtilsTest.java @@ -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)); } @@ -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 @@ -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 @@ -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); }