You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by ki...@apache.org on 2020/07/14 13:13:43 UTC

[shardingsphere] branch master updated: refactor orchestration facade (#6348)

This is an automated email from the ASF dual-hosted git repository.

kimmking pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new 803611c  refactor orchestration facade (#6348)
803611c is described below

commit 803611ca626394f1c85e672452c082ecb283da90
Author: Haoran Meng <me...@gmail.com>
AuthorDate: Tue Jul 14 21:13:19 2020 +0800

    refactor orchestration facade (#6348)
---
 .../core/facade/ShardingOrchestrationFacade.java   | 111 ++++++++++++++-------
 .../facade/ShardingOrchestrationFacadeTest.java    |   8 +-
 .../AbstractOrchestrationDataSource.java           |  16 +--
 .../OrchestrationShardingSphereDataSource.java     |   8 +-
 .../OrchestrationConfigurationConverter.java       |  14 ++-
 5 files changed, 98 insertions(+), 59 deletions(-)

diff --git a/shardingsphere-control-panel/shardingsphere-orchestration/shardingsphere-orchestration-core/shardingsphere-orchestration-core-facade/src/main/java/org/apache/shardingsphere/orchestration/core/facade/ShardingOrchestrationFacade.java b/shardingsphere-control-panel/shardingsphere-orchestration/shardingsphere-orchestration-core/shardingsphere-orchestration-core-facade/src/main/java/org/apache/shardingsphere/orchestration/core/facade/ShardingOrchestrationFacade.java
index 9c88f84..bcfb32d 100644
--- a/shardingsphere-control-panel/shardingsphere-orchestration/shardingsphere-orchestration-core/shardingsphere-orchestration-core-facade/src/main/java/org/apache/shardingsphere/orchestration/core/facade/ShardingOrchestrationFacade.java
+++ b/shardingsphere-control-panel/shardingsphere-orchestration/shardingsphere-orchestration-core/shardingsphere-orchestration-core-facade/src/main/java/org/apache/shardingsphere/orchestration/core/facade/ShardingOrchestrationFacade.java
@@ -57,84 +57,109 @@ public final class ShardingOrchestrationFacade implements AutoCloseable {
         ShardingSphereServiceLoader.register(ConfigCenterRepository.class);
         ShardingSphereServiceLoader.register(RegistryCenterRepository.class);
     }
-
-    @Getter
-    private static ShardingOrchestrationFacade instance;
     
-    private final ConfigCenterRepository configCenterRepository;
+    private ConfigCenterRepository configCenterRepository;
     
-    private final RegistryCenterRepository registryCenterRepository;
+    private RegistryCenterRepository registryCenterRepository;
 
-    private final ConfigCenterRepository centerRepository;
+    private ConfigCenterRepository centerRepository;
     
     @Getter
-    private final boolean isOverwrite;
+    private boolean isOverwrite;
     
     @Getter
-    private final ConfigCenter configCenter;
+    private ConfigCenter configCenter;
     
     @Getter
-    private final RegistryCenter registryCenter;
+    private RegistryCenter registryCenter;
 
     @Getter
-    private final MetaDataCenter metaDataCenter;
+    private MetaDataCenter metaDataCenter;
+    
+    private ShardingOrchestrationListenerManager listenerManager;
+    
+    private String configCenterName;
+    
+    private String registryCenterName;
+    
+    private String metaDataCenterName;
     
-    private final ShardingOrchestrationListenerManager listenerManager;
+    /**
+     * Init orchestration facade.
+     *
+     * @param orchestrationConfig orchestration configuration
+     * @param shardingSchemaNames collection of sharding schema names
+     */
+    public void init(final OrchestrationConfiguration orchestrationConfig, final Collection<String> shardingSchemaNames) {
+        initConfigCenter(orchestrationConfig);
+        initRegistryCenter(orchestrationConfig);
+        initMetaDataCenter(orchestrationConfig);
+        initListenerManager(shardingSchemaNames);
+    }
     
-    public ShardingOrchestrationFacade(final OrchestrationConfiguration orchestrationConfig, final Collection<String> shardingSchemaNames) {
-        Optional<String> configCenterName = getInstanceNameByOrchestrationType(orchestrationConfig.getInstanceConfigurationMap(), CenterType.CONFIG_CENTER.getValue());
-        Preconditions.checkArgument(configCenterName.isPresent(), "Can not find instance configuration with config center orchestration type.");
-        CenterConfiguration configCenterConfiguration = orchestrationConfig.getInstanceConfigurationMap().get(configCenterName.get());
+    private void initConfigCenter(final OrchestrationConfiguration orchestrationConfig) {
+        Optional<String> optional = getInstanceNameByOrchestrationType(orchestrationConfig.getInstanceConfigurationMap(), CenterType.CONFIG_CENTER.getValue());
+        Preconditions.checkArgument(optional.isPresent(), "Can not find instance configuration with config center orchestration type.");
+        configCenterName = optional.get();
+        CenterConfiguration configCenterConfiguration = orchestrationConfig.getInstanceConfigurationMap().get(configCenterName);
         Preconditions.checkNotNull(configCenterConfiguration, "Config center configuration cannot be null.");
         configCenterRepository = TypedSPIRegistry.getRegisteredService(
                 ConfigCenterRepository.class, configCenterConfiguration.getType(), configCenterConfiguration.getProps());
         configCenterRepository.init(configCenterConfiguration);
         isOverwrite = new OrchestrationProperties(configCenterConfiguration.getProps()).getValue(OrchestrationPropertyKey.OVERWRITE);
-        configCenter = new ConfigCenter(configCenterName.get(), configCenterRepository);
-        Optional<String> registryCenterName = getInstanceNameByOrchestrationType(orchestrationConfig.getInstanceConfigurationMap(), CenterType.REGISTRY_CENTER.getValue());
-        Preconditions.checkArgument(registryCenterName.isPresent(), "Can not find instance configuration with registry center orchestration type.");
-        CenterConfiguration registryCenterConfiguration = orchestrationConfig.getInstanceConfigurationMap().get(registryCenterName.get());
+        configCenter = new ConfigCenter(configCenterName, configCenterRepository);
+    }
+    
+    private void initRegistryCenter(final OrchestrationConfiguration orchestrationConfig) {
+        Optional<String> optional = getInstanceNameByOrchestrationType(orchestrationConfig.getInstanceConfigurationMap(), CenterType.REGISTRY_CENTER.getValue());
+        Preconditions.checkArgument(optional.isPresent(), "Can not find instance configuration with registry center orchestration type.");
+        registryCenterName = optional.get();
+        CenterConfiguration registryCenterConfiguration = orchestrationConfig.getInstanceConfigurationMap().get(registryCenterName);
         Preconditions.checkNotNull(registryCenterConfiguration, "Registry center configuration cannot be null.");
         registryCenterRepository = TypedSPIRegistry.getRegisteredService(RegistryCenterRepository.class, registryCenterConfiguration.getType(), registryCenterConfiguration.getProps());
         registryCenterRepository.init(registryCenterConfiguration);
-        registryCenter = new RegistryCenter(registryCenterName.get(), registryCenterRepository);
-        Optional<String> metaDataCenterName = getInstanceNameByOrchestrationType(orchestrationConfig.getInstanceConfigurationMap(), CenterType.METADATA_CENTER.getValue());
-        Preconditions.checkArgument(metaDataCenterName.isPresent(), "Can not find instance configuration with metadata center orchestration type.");
-        CenterConfiguration metaDataCenterConfiguration = orchestrationConfig.getInstanceConfigurationMap().get(metaDataCenterName.get());
+        registryCenter = new RegistryCenter(registryCenterName, registryCenterRepository);
+    }
+    
+    private void initMetaDataCenter(final OrchestrationConfiguration orchestrationConfig) {
+        Optional<String> optional = getInstanceNameByOrchestrationType(orchestrationConfig.getInstanceConfigurationMap(), CenterType.METADATA_CENTER.getValue());
+        Preconditions.checkArgument(optional.isPresent(), "Can not find instance configuration with metadata center orchestration type.");
+        metaDataCenterName = optional.get();
+        CenterConfiguration metaDataCenterConfiguration = orchestrationConfig.getInstanceConfigurationMap().get(metaDataCenterName);
         Preconditions.checkNotNull(metaDataCenterConfiguration, "MetaData center configuration cannot be null.");
         centerRepository = TypedSPIRegistry.getRegisteredService(ConfigCenterRepository.class, metaDataCenterConfiguration.getType(), metaDataCenterConfiguration.getProps());
         centerRepository.init(metaDataCenterConfiguration);
-        metaDataCenter = new MetaDataCenter(metaDataCenterName.get(), centerRepository);
-        listenerManager = shardingSchemaNames.isEmpty()
-                ? new ShardingOrchestrationListenerManager(
-                registryCenterName.get(), registryCenterRepository, configCenterName.get(),
-                configCenterRepository, metaDataCenterName.get(), centerRepository, configCenter.getAllShardingSchemaNames())
-                : new ShardingOrchestrationListenerManager(registryCenterName.get(), registryCenterRepository,
-                configCenterName.get(), configCenterRepository, metaDataCenterName.get(), centerRepository, shardingSchemaNames);
-        instance = this;
+        metaDataCenter = new MetaDataCenter(metaDataCenterName, centerRepository);
+    }
+    
+    private void initListenerManager(final Collection<String> shardingSchemaNames) {
+        listenerManager = new ShardingOrchestrationListenerManager(
+                registryCenterName, registryCenterRepository, configCenterName,
+                configCenterRepository, metaDataCenterName, centerRepository,
+                shardingSchemaNames.isEmpty() ? configCenter.getAllShardingSchemaNames() : shardingSchemaNames);
     }
     
     /**
-     * Initialize for orchestration.
+     * Init configurations of orchestration.
      *
      * @param dataSourceConfigurationMap schema data source configuration map
      * @param schemaRuleMap schema rule map
      * @param authentication authentication
      * @param props properties
      */
-    public void init(final Map<String, Map<String, DataSourceConfiguration>> dataSourceConfigurationMap,
+    public void initConfigurations(final Map<String, Map<String, DataSourceConfiguration>> dataSourceConfigurationMap,
                      final Map<String, Collection<RuleConfiguration>> schemaRuleMap, final Authentication authentication, final Properties props) {
         configCenter.persistGlobalConfiguration(authentication, props, isOverwrite);
         for (Entry<String, Map<String, DataSourceConfiguration>> entry : dataSourceConfigurationMap.entrySet()) {
             configCenter.persistConfigurations(entry.getKey(), dataSourceConfigurationMap.get(entry.getKey()), schemaRuleMap.get(entry.getKey()), isOverwrite);
         }
-        init();
+        initConfigurations();
     }
     
     /**
-     * Initialize for orchestration.
+     * Init configurations of orchestration.
      */
-    public void init() {
+    public void initConfigurations() {
         registryCenter.persistInstanceOnline();
         registryCenter.persistDataSourcesNode();
         listenerManager.initListeners();
@@ -179,4 +204,18 @@ public final class ShardingOrchestrationFacade implements AutoCloseable {
     private boolean contains(final String collection, final String element) {
         return Splitter.on(",").omitEmptyStrings().trimResults().splitToList(collection).stream().anyMatch(each -> element.equals(each.trim()));
     }
+    
+    /**
+     * Get orchestration facade instance.
+     *
+     * @return orchestration facade instance
+     */
+    public static ShardingOrchestrationFacade getInstance() {
+        return ShardingOrchestrationFacadeHolder.INSTANCE;
+    }
+    
+    private static final class ShardingOrchestrationFacadeHolder {
+        
+        public static final ShardingOrchestrationFacade INSTANCE = new ShardingOrchestrationFacade();
+    }
 }
diff --git a/shardingsphere-control-panel/shardingsphere-orchestration/shardingsphere-orchestration-core/shardingsphere-orchestration-core-facade/src/test/java/org/apache/shardingsphere/orchestration/core/facade/ShardingOrchestrationFacadeTest.java b/shardingsphere-control-panel/shardingsphere-orchestration/shardingsphere-orchestration-core/shardingsphere-orchestration-core-facade/src/test/java/org/apache/shardingsphere/orchestration/core/facade/ShardingOrchestrationFacadeTest.java
index c9ae741..cb25c2e 100644
--- a/shardingsphere-control-panel/shardingsphere-orchestration/shardingsphere-orchestration-core/shardingsphere-orchestration-core-facade/src/test/java/org/apache/shardingsphere/orchestration/core/facade/ShardingOrchestrationFacadeTest.java
+++ b/shardingsphere-control-panel/shardingsphere-orchestration/shardingsphere-orchestration-core/shardingsphere-orchestration-core-facade/src/test/java/org/apache/shardingsphere/orchestration/core/facade/ShardingOrchestrationFacadeTest.java
@@ -50,7 +50,7 @@ import static org.mockito.Mockito.verify;
 @RunWith(MockitoJUnitRunner.class)
 public final class ShardingOrchestrationFacadeTest {
     
-    private ShardingOrchestrationFacade shardingOrchestrationFacade;
+    private ShardingOrchestrationFacade shardingOrchestrationFacade = ShardingOrchestrationFacade.getInstance();
     
     @Mock
     private RegistryCenterRepository registryCenterRepository;
@@ -83,7 +83,7 @@ public final class ShardingOrchestrationFacadeTest {
         configuration3.setNamespace("namespace_3");
         instanceConfigurationMap.put("test_name_3", configuration3);
         OrchestrationConfiguration orchestrationConfiguration = new OrchestrationConfiguration(instanceConfigurationMap);
-        shardingOrchestrationFacade = new ShardingOrchestrationFacade(orchestrationConfiguration, Arrays.asList("sharding_db", "masterslave_db"));
+        shardingOrchestrationFacade.init(orchestrationConfiguration, Arrays.asList("sharding_db", "masterslave_db"));
         FieldUtil.setField(shardingOrchestrationFacade, "registryCenterRepository", registryCenterRepository);
         FieldUtil.setField(shardingOrchestrationFacade, "configCenter", configCenter);
         FieldUtil.setField(shardingOrchestrationFacade, "registryCenter", registryCenter);
@@ -99,7 +99,7 @@ public final class ShardingOrchestrationFacadeTest {
         Authentication authentication = new Authentication();
         authentication.getUsers().put("root", proxyUser);
         Properties props = new Properties();
-        shardingOrchestrationFacade.init(Collections.singletonMap("sharding_db", dataSourceConfigurationMap), ruleConfigurationMap, authentication, props);
+        shardingOrchestrationFacade.initConfigurations(Collections.singletonMap("sharding_db", dataSourceConfigurationMap), ruleConfigurationMap, authentication, props);
         verify(configCenter).persistConfigurations("sharding_db", dataSourceConfigurationMap, ruleConfigurationMap.get("sharding_db"), false);
         verify(configCenter).persistGlobalConfiguration(authentication, props, false);
         verify(registryCenter).persistInstanceOnline();
@@ -116,7 +116,7 @@ public final class ShardingOrchestrationFacadeTest {
     
     @Test
     public void assertInitWithoutParameters() {
-        shardingOrchestrationFacade.init();
+        shardingOrchestrationFacade.initConfigurations();
         verify(registryCenter).persistInstanceOnline();
         verify(registryCenter).persistDataSourcesNode();
         verify(listenerManager).initListeners();
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-orchestration/src/main/java/org/apache/shardingsphere/driver/orchestration/internal/datasource/AbstractOrchestrationDataSource.java b/shardingsphere-jdbc/shardingsphere-jdbc-orchestration/src/main/java/org/apache/shardingsphere/driver/orchestration/internal/datasource/AbstractOrchestrationDataSource.java
index 12798a7..095bc4d 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-orchestration/src/main/java/org/apache/shardingsphere/driver/orchestration/internal/datasource/AbstractOrchestrationDataSource.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-orchestration/src/main/java/org/apache/shardingsphere/driver/orchestration/internal/datasource/AbstractOrchestrationDataSource.java
@@ -31,6 +31,7 @@ import org.apache.shardingsphere.infra.config.DataSourceConfiguration;
 import org.apache.shardingsphere.infra.config.RuleConfiguration;
 import org.apache.shardingsphere.infra.database.DefaultSchema;
 import org.apache.shardingsphere.infra.metadata.schema.RuleSchemaMetaData;
+import org.apache.shardingsphere.orchestration.center.config.OrchestrationConfiguration;
 import org.apache.shardingsphere.orchestration.core.common.eventbus.ShardingOrchestrationEventBus;
 import org.apache.shardingsphere.orchestration.core.facade.ShardingOrchestrationFacade;
 
@@ -39,6 +40,7 @@ import java.io.PrintWriter;
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.LinkedHashMap;
 import java.util.LinkedList;
 import java.util.List;
@@ -58,13 +60,13 @@ public abstract class AbstractOrchestrationDataSource extends AbstractUnsupporte
     private PrintWriter logWriter = new PrintWriter(System.out);
     
     @Getter(AccessLevel.PROTECTED)
-    private final ShardingOrchestrationFacade shardingOrchestrationFacade;
+    private final ShardingOrchestrationFacade shardingOrchestrationFacade = ShardingOrchestrationFacade.getInstance();
     
     @Getter(AccessLevel.PROTECTED)
     private final Map<String, DataSourceConfiguration> dataSourceConfigurations = new LinkedHashMap<>();
     
-    public AbstractOrchestrationDataSource(final ShardingOrchestrationFacade shardingOrchestrationFacade) {
-        this.shardingOrchestrationFacade = shardingOrchestrationFacade;
+    public AbstractOrchestrationDataSource(final OrchestrationConfiguration orchestrationConfig) {
+        this.shardingOrchestrationFacade.init(orchestrationConfig, Collections.singletonList(DefaultSchema.LOGIC_NAME));
         ShardingOrchestrationEventBus.getInstance().register(this);
     }
     
@@ -87,12 +89,12 @@ public abstract class AbstractOrchestrationDataSource extends AbstractUnsupporte
     }
     
     protected final void initShardingOrchestrationFacade() {
-        shardingOrchestrationFacade.init();
+        shardingOrchestrationFacade.initConfigurations();
         dataSourceConfigurations.putAll(shardingOrchestrationFacade.getConfigCenter().loadDataSourceConfigurations(DefaultSchema.LOGIC_NAME));
     }
     
     protected final void initShardingOrchestrationFacade(final ClusterConfiguration clusterConfiguration) {
-        shardingOrchestrationFacade.init();
+        shardingOrchestrationFacade.initConfigurations();
         shardingOrchestrationFacade.initClusterConfiguration(clusterConfiguration);
         dataSourceConfigurations.putAll(shardingOrchestrationFacade.getConfigCenter().loadDataSourceConfigurations(DefaultSchema.LOGIC_NAME));
     }
@@ -100,14 +102,14 @@ public abstract class AbstractOrchestrationDataSource extends AbstractUnsupporte
     protected final void initShardingOrchestrationFacade(
             final Map<String, Map<String, DataSourceConfiguration>> dataSourceConfigurations,
             final Map<String, Collection<RuleConfiguration>> schemaRules, final Properties props) {
-        shardingOrchestrationFacade.init(dataSourceConfigurations, schemaRules, null, props);
+        shardingOrchestrationFacade.initConfigurations(dataSourceConfigurations, schemaRules, null, props);
         this.dataSourceConfigurations.putAll(dataSourceConfigurations.get(DefaultSchema.LOGIC_NAME));
     }
     
     protected final void initShardingOrchestrationFacade(
             final Map<String, Map<String, DataSourceConfiguration>> dataSourceConfigurations,
             final Map<String, Collection<RuleConfiguration>> schemaRules, final Properties props, final ClusterConfiguration clusterConfiguration) {
-        shardingOrchestrationFacade.init(dataSourceConfigurations, schemaRules, null, props);
+        shardingOrchestrationFacade.initConfigurations(dataSourceConfigurations, schemaRules, null, props);
         shardingOrchestrationFacade.initClusterConfiguration(clusterConfiguration);
         this.dataSourceConfigurations.putAll(dataSourceConfigurations.get(DefaultSchema.LOGIC_NAME));
     }
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-orchestration/src/main/java/org/apache/shardingsphere/driver/orchestration/internal/datasource/OrchestrationShardingSphereDataSource.java b/shardingsphere-jdbc/shardingsphere-jdbc-orchestration/src/main/java/org/apache/shardingsphere/driver/orchestration/internal/datasource/OrchestrationShardingSphereDataSource.java
index de6d024..72c6b26 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-orchestration/src/main/java/org/apache/shardingsphere/driver/orchestration/internal/datasource/OrchestrationShardingSphereDataSource.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-orchestration/src/main/java/org/apache/shardingsphere/driver/orchestration/internal/datasource/OrchestrationShardingSphereDataSource.java
@@ -70,7 +70,7 @@ public class OrchestrationShardingSphereDataSource extends AbstractOrchestration
     private ShardingSphereDataSource dataSource;
     
     public OrchestrationShardingSphereDataSource(final OrchestrationConfiguration orchestrationConfig) throws SQLException {
-        super(new ShardingOrchestrationFacade(orchestrationConfig, Collections.singletonList(DefaultSchema.LOGIC_NAME)));
+        super(orchestrationConfig);
         ConfigCenter configService = getShardingOrchestrationFacade().getConfigCenter();
         Collection<RuleConfiguration> configurations = configService.loadRuleConfigurations(DefaultSchema.LOGIC_NAME);
         Preconditions.checkState(!configurations.isEmpty(), "Missing the sharding rule configuration on registry center");
@@ -83,7 +83,7 @@ public class OrchestrationShardingSphereDataSource extends AbstractOrchestration
     }
     
     public OrchestrationShardingSphereDataSource(final ShardingSphereDataSource shardingSphereDataSource, final OrchestrationConfiguration orchestrationConfig) {
-        super(new ShardingOrchestrationFacade(orchestrationConfig, Collections.singletonList(DefaultSchema.LOGIC_NAME)));
+        super(orchestrationConfig);
         dataSource = shardingSphereDataSource;
         initShardingOrchestrationFacade(Collections.singletonMap(DefaultSchema.LOGIC_NAME, DataSourceConverter.getDataSourceConfigurationMap(dataSource.getDataSourceMap())),
                 getRuleConfigurationMap(), dataSource.getSchemaContexts().getProps().getProps());
@@ -93,7 +93,7 @@ public class OrchestrationShardingSphereDataSource extends AbstractOrchestration
     }
     
     public OrchestrationShardingSphereDataSource(final OrchestrationConfiguration orchestrationConfig, final ClusterConfiguration clusterConfiguration) throws SQLException {
-        super(new ShardingOrchestrationFacade(orchestrationConfig, Collections.singletonList(DefaultSchema.LOGIC_NAME)));
+        super(orchestrationConfig);
         ConfigCenter configService = getShardingOrchestrationFacade().getConfigCenter();
         Collection<RuleConfiguration> configurations = configService.loadRuleConfigurations(DefaultSchema.LOGIC_NAME);
         Preconditions.checkState(!configurations.isEmpty(), "Missing the sharding rule configuration on registry center");
@@ -107,7 +107,7 @@ public class OrchestrationShardingSphereDataSource extends AbstractOrchestration
     
     public OrchestrationShardingSphereDataSource(final ShardingSphereDataSource shardingSphereDataSource,
                                                  final OrchestrationConfiguration orchestrationConfig, final ClusterConfiguration clusterConfiguration) {
-        super(new ShardingOrchestrationFacade(orchestrationConfig, Collections.singletonList(DefaultSchema.LOGIC_NAME)));
+        super(orchestrationConfig);
         dataSource = shardingSphereDataSource;
         initShardingOrchestrationFacade(Collections.singletonMap(DefaultSchema.LOGIC_NAME, DataSourceConverter.getDataSourceConfigurationMap(dataSource.getDataSourceMap())),
                 getRuleConfigurationMap(), dataSource.getSchemaContexts().getProps().getProps(), clusterConfiguration);
diff --git a/shardingsphere-proxy/shardingsphere-proxy-orchestration/src/main/java/org/apache/shardingsphere/proxy/orchestration/OrchestrationConfigurationConverter.java b/shardingsphere-proxy/shardingsphere-proxy-orchestration/src/main/java/org/apache/shardingsphere/proxy/orchestration/OrchestrationConfigurationConverter.java
index 086fc27..64b6a0f 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-orchestration/src/main/java/org/apache/shardingsphere/proxy/orchestration/OrchestrationConfigurationConverter.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-orchestration/src/main/java/org/apache/shardingsphere/proxy/orchestration/OrchestrationConfigurationConverter.java
@@ -52,17 +52,15 @@ import java.util.Set;
  */
 public class OrchestrationConfigurationConverter extends AbstractConfigurationConverter {
     
-    private ShardingOrchestrationFacade shardingOrchestrationFacade;
+    private ShardingOrchestrationFacade shardingOrchestrationFacade = ShardingOrchestrationFacade.getInstance();
     
     @Override
     public ProxyConfiguration convert(final ShardingConfiguration shardingConfiguration) {
         Map<String, YamlCenterRepositoryConfiguration> orchestration = shardingConfiguration.getServerConfiguration().getOrchestration();
         Set<String> schemaNames = shardingConfiguration.getRuleConfigurationMap().keySet();
         ProxyConfiguration proxyConfiguration = new ProxyConfiguration();
-        shardingOrchestrationFacade = new ShardingOrchestrationFacade(
-                new OrchestrationConfigurationYamlSwapper().swapToObject(new YamlOrchestrationConfiguration(orchestration)), schemaNames
-        );
-        initShardingOrchestrationFacade(shardingConfiguration.getServerConfiguration(), shardingConfiguration.getRuleConfigurationMap(), shardingOrchestrationFacade);
+        shardingOrchestrationFacade.init(new OrchestrationConfigurationYamlSwapper().swapToObject(new YamlOrchestrationConfiguration(orchestration)), schemaNames);
+        initOrchestrationConfigurations(shardingConfiguration.getServerConfiguration(), shardingConfiguration.getRuleConfigurationMap(), shardingOrchestrationFacade);
         Authentication authentication = shardingOrchestrationFacade.getConfigCenter().loadAuthentication();
         Properties properties = shardingOrchestrationFacade.getConfigCenter().loadProperties();
         Map<String, Map<String, DataSourceParameter>> schemaDataSources = getDataSourceParametersMap(shardingOrchestrationFacade);
@@ -82,12 +80,12 @@ public class OrchestrationConfigurationConverter extends AbstractConfigurationCo
         return new ProxyOrchestrationSchemaContexts(builder.build());
     }
     
-    private void initShardingOrchestrationFacade(
+    private void initOrchestrationConfigurations(
             final YamlProxyServerConfiguration serverConfig, final Map<String, YamlProxyRuleConfiguration> ruleConfigs, final ShardingOrchestrationFacade shardingOrchestrationFacade) {
         if (isEmptyLocalConfiguration(serverConfig, ruleConfigs)) {
-            shardingOrchestrationFacade.init();
+            shardingOrchestrationFacade.initConfigurations();
         } else {
-            shardingOrchestrationFacade.init(getDataSourceConfigurationMap(ruleConfigs),
+            shardingOrchestrationFacade.initConfigurations(getDataSourceConfigurationMap(ruleConfigs),
                     getRuleConfigurations(ruleConfigs), new AuthenticationYamlSwapper().swapToObject(serverConfig.getAuthentication()), serverConfig.getProps());
         }
         shardingOrchestrationFacade.initMetricsConfiguration(Optional.ofNullable(serverConfig.getMetrics()).map(new MetricsConfigurationYamlSwapper()::swapToObject).orElse(null));