[SCB-2877]Fix zookeeper cache instances by application name problem (#4329)

diff --git a/service-registry/registry-zookeeper/src/main/java/org/apache/servicecomb/registry/zookeeper/ZookeeperDiscovery.java b/service-registry/registry-zookeeper/src/main/java/org/apache/servicecomb/registry/zookeeper/ZookeeperDiscovery.java
index 4d871b3..c421a70 100644
--- a/service-registry/registry-zookeeper/src/main/java/org/apache/servicecomb/registry/zookeeper/ZookeeperDiscovery.java
+++ b/service-registry/registry-zookeeper/src/main/java/org/apache/servicecomb/registry/zookeeper/ZookeeperDiscovery.java
@@ -73,7 +73,7 @@
 
   private static final Logger LOGGER = LoggerFactory.getLogger(ZookeeperDiscovery.class);
 
-  private final Map<String, ServiceCache<ZookeeperInstance>> serviceDiscoveries =
+  private final Map<String, Map<String, ServiceCache<ZookeeperInstance>>> serviceDiscoveries =
       new ConcurrentHashMapEx<>();
 
   private Environment environment;
@@ -112,7 +112,8 @@
   @Override
   public List<ZookeeperDiscoveryInstance> findServiceInstances(String application, String serviceName) {
     try {
-      ServiceCache<ZookeeperInstance> discovery = serviceDiscoveries.computeIfAbsent(application, app -> {
+      ServiceCache<ZookeeperInstance> discovery = serviceDiscoveries.computeIfAbsent(application, app ->
+          new ConcurrentHashMapEx<>()).computeIfAbsent(serviceName, name -> {
         JsonInstanceSerializer<ZookeeperInstance> serializer =
             new JsonInstanceSerializer<>(ZookeeperInstance.class);
         ServiceDiscovery<ZookeeperInstance> dis = ServiceDiscoveryBuilder.builder(ZookeeperInstance.class)