From d0b98b309006379e57be06ad8d0cda2d8920f760 Mon Sep 17 00:00:00 2001 From: liuguangliang <240951888@qq.com> Date: Wed, 8 Mar 2023 18:42:27 +0800 Subject: [PATCH] improve NacosNamingServiceWrapper performance (#11665) Signed-off-by: mantuliu <240951888@qq.com> --- .../nacos/NacosNamingServiceWrapper.java | 44 +++---------------- 1 file changed, 7 insertions(+), 37 deletions(-) diff --git a/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosNamingServiceWrapper.java b/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosNamingServiceWrapper.java index 3bd6116d15..2b09d8f675 100644 --- a/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosNamingServiceWrapper.java +++ b/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosNamingServiceWrapper.java @@ -60,7 +60,6 @@ public class NacosNamingServiceWrapper { private final ConcurrentMap registerStatus = new ConcurrentHashMap<>(); private final ConcurrentMap subscribeStatus = new ConcurrentHashMap<>(); - private final Lock mapLock = new ReentrantLock(); public NacosNamingServiceWrapper(NacosConnectionManager nacosConnectionManager, int retryTimes, int sleepMsBetweenRetries) { this.nacosConnectionManager = nacosConnectionManager; @@ -108,13 +107,7 @@ public class NacosNamingServiceWrapper { public void registerInstance(String serviceName, String group, Instance instance) throws NacosException { String nacosServiceName = handleInnerSymbol(serviceName); - InstancesInfo instancesInfo; - try { - mapLock.lock(); - instancesInfo = ConcurrentHashMapUtils.computeIfAbsent(registerStatus, new InstanceId(nacosServiceName, group), id -> new InstancesInfo()); - } finally { - mapLock.unlock(); - } + InstancesInfo instancesInfo = ConcurrentHashMapUtils.computeIfAbsent(registerStatus, new InstanceId(nacosServiceName, group), id -> new InstancesInfo()); try { instancesInfo.lock(); @@ -176,13 +169,7 @@ public class NacosNamingServiceWrapper { public void updateInstance(String serviceName, String group, Instance oldInstance, Instance newInstance) throws NacosException { String nacosServiceName = handleInnerSymbol(serviceName); - InstancesInfo instancesInfo; - try { - mapLock.lock(); - instancesInfo = ConcurrentHashMapUtils.computeIfAbsent(registerStatus, new InstanceId(nacosServiceName, group), id -> new InstancesInfo()); - } finally { - mapLock.unlock(); - } + InstancesInfo instancesInfo = ConcurrentHashMapUtils.computeIfAbsent(registerStatus, new InstanceId(nacosServiceName, group), id -> new InstancesInfo()); try { instancesInfo.lock(); @@ -222,13 +209,7 @@ public class NacosNamingServiceWrapper { public void deregisterInstance(String serviceName, String group, String ip, int port) throws NacosException { String nacosServiceName = handleInnerSymbol(serviceName); - InstancesInfo instancesInfo; - try { - mapLock.lock(); - instancesInfo = ConcurrentHashMapUtils.computeIfAbsent(registerStatus, new InstanceId(nacosServiceName, group), id -> new InstancesInfo()); - } finally { - mapLock.unlock(); - } + InstancesInfo instancesInfo = ConcurrentHashMapUtils.computeIfAbsent(registerStatus, new InstanceId(nacosServiceName, group), id -> new InstancesInfo()); try { instancesInfo.lock(); @@ -249,13 +230,7 @@ public class NacosNamingServiceWrapper { public void deregisterInstance(String serviceName, String group, Instance instance) throws NacosException { String nacosServiceName = handleInnerSymbol(serviceName); - InstancesInfo instancesInfo; - try { - mapLock.lock(); - instancesInfo = ConcurrentHashMapUtils.computeIfAbsent(registerStatus, new InstanceId(nacosServiceName, group), id -> new InstancesInfo()); - } finally { - mapLock.unlock(); - } + InstancesInfo instancesInfo = ConcurrentHashMapUtils.computeIfAbsent(registerStatus, new InstanceId(nacosServiceName, group), id -> new InstancesInfo()); try { instancesInfo.lock(); @@ -269,14 +244,9 @@ public class NacosNamingServiceWrapper { InstanceInfo instanceInfo = optional.get(); instancesInfo.getInstances().remove(instanceInfo); - try { - mapLock.lock(); - if (instancesInfo.getInstances().isEmpty()) { - registerStatus.remove(new InstanceId(nacosServiceName, group)); - instancesInfo.setValid(false); - } - } finally { - mapLock.unlock(); + if (instancesInfo.getInstances().isEmpty()) { + registerStatus.remove(new InstanceId(nacosServiceName, group)); + instancesInfo.setValid(false); } // only one registered