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

sunnianjun 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 bc095bd4052 Rename ReadwriteSplittingDataSourceGroupRuleConfiguration 
(#31016)
bc095bd4052 is described below

commit bc095bd405210e89aac60b80d1448645c9a302c7
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Apr 25 23:59:02 2024 +0800

    Rename ReadwriteSplittingDataSourceGroupRuleConfiguration (#31016)
    
    * Rename ReadwriteSplittingDataSourceGroupRuleConfiguration
    
    * Rename ReadwriteSplittingDataSourceGroupRuleConfiguration
---
 .../java-api/rules/readwrite-splitting.cn.md       |  2 +-
 .../java-api/rules/readwrite-splitting.en.md       |  2 +-
 .../template/java/config/Configuration.ftl         |  2 +-
 .../api/ReadwriteSplittingRuleConfiguration.java   |  6 ++--
 ...SplittingDataSourceGroupRuleConfiguration.java} |  6 ++--
 ...plittingDataSourceRuleConfigurationChecker.java |  7 ++--
 ...ReadwriteSplittingRuleConfigurationChecker.java | 10 +++---
 .../ReadwriteSplittingDataSourceGroupRule.java     |  6 ++--
 .../rule/ReadwriteSplittingRule.java               | 24 +++++++-------
 ...adwriteSplittingDataSourceChangedProcessor.java | 18 +++++-----
 ...eSplittingDataNodeRuleConfigurationSwapper.java | 24 +++++++-------
 ...ReadwriteSplittingRuleConfigurationSwapper.java | 22 ++++++-------
 ...writeSplittingRuleConfigurationCheckerTest.java | 38 +++++++++++-----------
 .../route/ReadwriteSplittingSQLRouterTest.java     |  4 +--
 ...SplittingTransactionalDataSourceRouterTest.java | 12 +++----
 ...dardReadwriteSplittingDataSourceRouterTest.java |  4 +--
 .../filter/DisabledReadDataSourcesFilterTest.java  |  4 +--
 .../ReadwriteSplittingDataSourceGroupRuleTest.java |  4 +--
 .../rule/ReadwriteSplittingRuleTest.java           |  8 ++---
 ...SplittingDataSourceMapperRuleAttributeTest.java |  4 +--
 .../builder/ReadwriteSplittingRuleBuilderTest.java |  4 +--
 ...ittingDataNodeRuleConfigurationSwapperTest.java | 18 +++++-----
 ...writeSplittingRuleConfigurationSwapperTest.java | 12 +++----
 .../ReadwriteSplittingRuleStatementChecker.java    |  8 ++---
 .../ReadwriteSplittingRuleStatementConverter.java  | 17 +++++-----
 ...littingRuleConfigurationToDistSQLConverter.java | 16 ++++-----
 ...UsedReadwriteSplittingStorageUnitRetriever.java |  4 +--
 .../query/ShowReadwriteSplittingRuleExecutor.java  | 24 +++++++-------
 .../AlterReadwriteSplittingRuleExecutor.java       | 12 +++----
 .../CreateReadwriteSplittingRuleExecutor.java      |  4 +--
 .../update/DropReadwriteSplittingRuleExecutor.java | 20 +++++++-----
 ...adwriteSplittingRuleStatementConverterTest.java | 10 +++---
 ...ingRuleConfigurationToDistSQLConverterTest.java | 10 +++---
 .../ShowReadwriteSplittingRuleExecutorTest.java    | 14 ++++----
 .../AlterReadwriteSplittingRuleExecutorTest.java   | 18 +++++-----
 .../CreateReadwriteSplittingRuleExecutorTest.java  |  8 ++---
 .../DropReadwriteSplittingRuleExecutorTest.java    | 26 +++++++--------
 .../swapper/YamlProxyConfigurationSwapperTest.java | 12 +++----
 38 files changed, 224 insertions(+), 220 deletions(-)

diff --git 
a/docs/document/content/user-manual/shardingsphere-jdbc/java-api/rules/readwrite-splitting.cn.md
 
b/docs/document/content/user-manual/shardingsphere-jdbc/java-api/rules/readwrite-splitting.cn.md
index 479ce677c31..a324b5b80af 100644
--- 
a/docs/document/content/user-manual/shardingsphere-jdbc/java-api/rules/readwrite-splitting.cn.md
+++ 
b/docs/document/content/user-manual/shardingsphere-jdbc/java-api/rules/readwrite-splitting.cn.md
@@ -22,7 +22,7 @@ Java API 形式配置的读写分离可以方便的适用于各种场景,不
 
 ## 主从数据源配置
 
-类名称:org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration
+类名称:org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration
 
 可配置属性:
 
diff --git 
a/docs/document/content/user-manual/shardingsphere-jdbc/java-api/rules/readwrite-splitting.en.md
 
b/docs/document/content/user-manual/shardingsphere-jdbc/java-api/rules/readwrite-splitting.en.md
index 2f655ef05f0..4ed52171247 100644
--- 
a/docs/document/content/user-manual/shardingsphere-jdbc/java-api/rules/readwrite-splitting.en.md
+++ 
b/docs/document/content/user-manual/shardingsphere-jdbc/java-api/rules/readwrite-splitting.en.md
@@ -22,7 +22,7 @@ Configurable Properties:
 
 ### Primary-secondary Data Source Configuration
 
-Class name: 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration
+Class name: 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration
 
 Configurable Properties:
 
diff --git 
a/examples/shardingsphere-jdbc-example-generator/src/main/resources/template/java/config/Configuration.ftl
 
b/examples/shardingsphere-jdbc-example-generator/src/main/resources/template/java/config/Configuration.ftl
index a8d7ff538d3..14f156a6b4c 100644
--- 
a/examples/shardingsphere-jdbc-example-generator/src/main/resources/template/java/config/Configuration.ftl
+++ 
b/examples/shardingsphere-jdbc-example-generator/src/main/resources/template/java/config/Configuration.ftl
@@ -39,7 +39,7 @@ import 
org.apache.shardingsphere.broadcast.api.config.BroadcastRuleConfiguration
 </#if>
 <#if feature?contains("readwrite-splitting")>
 import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 </#if>
 <#if feature?contains("encrypt")>
 import org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
diff --git 
a/features/readwrite-splitting/api/src/main/java/org/apache/shardingsphere/readwritesplitting/api/ReadwriteSplittingRuleConfiguration.java
 
b/features/readwrite-splitting/api/src/main/java/org/apache/shardingsphere/readwritesplitting/api/ReadwriteSplittingRuleConfiguration.java
index bf95483ab97..e34e337733b 100644
--- 
a/features/readwrite-splitting/api/src/main/java/org/apache/shardingsphere/readwritesplitting/api/ReadwriteSplittingRuleConfiguration.java
+++ 
b/features/readwrite-splitting/api/src/main/java/org/apache/shardingsphere/readwritesplitting/api/ReadwriteSplittingRuleConfiguration.java
@@ -22,7 +22,7 @@ import lombok.RequiredArgsConstructor;
 import 
org.apache.shardingsphere.infra.algorithm.core.config.AlgorithmConfiguration;
 import 
org.apache.shardingsphere.infra.config.rule.function.DistributedRuleConfiguration;
 import 
org.apache.shardingsphere.infra.config.rule.scope.DatabaseRuleConfiguration;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 
 import java.util.Collection;
 import java.util.Map;
@@ -34,12 +34,12 @@ import java.util.Map;
 @Getter
 public final class ReadwriteSplittingRuleConfiguration implements 
DatabaseRuleConfiguration, DistributedRuleConfiguration {
     
-    private final Collection<ReadwriteSplittingDataSourceRuleConfiguration> 
dataSources;
+    private final 
Collection<ReadwriteSplittingDataSourceGroupRuleConfiguration> dataSourceGroups;
     
     private final Map<String, AlgorithmConfiguration> loadBalancers;
     
     @Override
     public boolean isEmpty() {
-        return dataSources.isEmpty();
+        return dataSourceGroups.isEmpty();
     }
 }
diff --git 
a/features/readwrite-splitting/api/src/main/java/org/apache/shardingsphere/readwritesplitting/api/rule/ReadwriteSplittingDataSourceRuleConfiguration.java
 
b/features/readwrite-splitting/api/src/main/java/org/apache/shardingsphere/readwritesplitting/api/rule/ReadwriteSplittingDataSourceGroupRuleConfiguration.java
similarity index 82%
rename from 
features/readwrite-splitting/api/src/main/java/org/apache/shardingsphere/readwritesplitting/api/rule/ReadwriteSplittingDataSourceRuleConfiguration.java
rename to 
features/readwrite-splitting/api/src/main/java/org/apache/shardingsphere/readwritesplitting/api/rule/ReadwriteSplittingDataSourceGroupRuleConfiguration.java
index a330d40e8da..bb13eb34ddc 100644
--- 
a/features/readwrite-splitting/api/src/main/java/org/apache/shardingsphere/readwritesplitting/api/rule/ReadwriteSplittingDataSourceRuleConfiguration.java
+++ 
b/features/readwrite-splitting/api/src/main/java/org/apache/shardingsphere/readwritesplitting/api/rule/ReadwriteSplittingDataSourceGroupRuleConfiguration.java
@@ -24,11 +24,11 @@ import 
org.apache.shardingsphere.readwritesplitting.api.transaction.Transactiona
 import java.util.List;
 
 /**
- * Readwrite-splitting data source rule configuration.
+ * Readwrite-splitting data source group rule configuration.
  */
 @RequiredArgsConstructor
 @Getter
-public final class ReadwriteSplittingDataSourceRuleConfiguration {
+public final class ReadwriteSplittingDataSourceGroupRuleConfiguration {
     
     private final String name;
     
@@ -40,7 +40,7 @@ public final class 
ReadwriteSplittingDataSourceRuleConfiguration {
     
     private final String loadBalancerName;
     
-    public ReadwriteSplittingDataSourceRuleConfiguration(final String name, 
final String writeDataSourceName, final List<String> readDataSourceNames, final 
String loadBalancerName) {
+    public ReadwriteSplittingDataSourceGroupRuleConfiguration(final String 
name, final String writeDataSourceName, final List<String> readDataSourceNames, 
final String loadBalancerName) {
         this(name, writeDataSourceName, readDataSourceNames, 
TransactionalReadQueryStrategy.DYNAMIC, loadBalancerName);
     }
 }
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/checker/ReadwriteSplittingDataSourceRuleConfigurationChecker.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/checker/ReadwriteSplittingDataSourceRuleConfigurationChecker.java
index ca9d4b68a1f..730a7406cd2 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/checker/ReadwriteSplittingDataSourceRuleConfigurationChecker.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/checker/ReadwriteSplittingDataSourceRuleConfigurationChecker.java
@@ -21,7 +21,7 @@ import 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePrecondition
 import org.apache.shardingsphere.infra.expr.core.InlineExpressionParserFactory;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 import 
org.apache.shardingsphere.infra.rule.attribute.datasource.DataSourceMapperRuleAttribute;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.constant.ReadwriteSplittingDataSourceType;
 import 
org.apache.shardingsphere.readwritesplitting.exception.ReadwriteSplittingRuleExceptionIdentifier;
 import 
org.apache.shardingsphere.readwritesplitting.exception.actual.DuplicateReadwriteSplittingActualDataSourceException;
@@ -40,13 +40,14 @@ public final class 
ReadwriteSplittingDataSourceRuleConfigurationChecker {
     
     private final String databaseName;
     
-    private final ReadwriteSplittingDataSourceRuleConfiguration config;
+    private final ReadwriteSplittingDataSourceGroupRuleConfiguration config;
     
     private final Map<String, DataSource> dataSourceMap;
     
     private final ReadwriteSplittingRuleExceptionIdentifier 
exceptionIdentifier;
     
-    public ReadwriteSplittingDataSourceRuleConfigurationChecker(final String 
databaseName, final ReadwriteSplittingDataSourceRuleConfiguration config, final 
Map<String, DataSource> dataSourceMap) {
+    public ReadwriteSplittingDataSourceRuleConfigurationChecker(final String 
databaseName,
+                                                                final 
ReadwriteSplittingDataSourceGroupRuleConfiguration config, final Map<String, 
DataSource> dataSourceMap) {
         this.databaseName = databaseName;
         this.config = config;
         this.dataSourceMap = dataSourceMap;
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/checker/ReadwriteSplittingRuleConfigurationChecker.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/checker/ReadwriteSplittingRuleConfigurationChecker.java
index 0b1c5a3d4ca..c43135b1245 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/checker/ReadwriteSplittingRuleConfigurationChecker.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/checker/ReadwriteSplittingRuleConfigurationChecker.java
@@ -26,7 +26,7 @@ import 
org.apache.shardingsphere.infra.exception.core.external.sql.identifier.SQ
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.constant.ReadwriteSplittingOrder;
 
 import javax.sql.DataSource;
@@ -44,11 +44,11 @@ public final class 
ReadwriteSplittingRuleConfigurationChecker implements RuleCon
     
     @Override
     public void check(final String databaseName, final 
ReadwriteSplittingRuleConfiguration ruleConfig, final Map<String, DataSource> 
dataSourceMap, final Collection<ShardingSphereRule> builtRules) {
-        checkDataSources(databaseName, ruleConfig.getDataSources(), 
dataSourceMap, builtRules);
+        checkDataSources(databaseName, ruleConfig.getDataSourceGroups(), 
dataSourceMap, builtRules);
         checkLoadBalancer(databaseName, ruleConfig);
     }
     
-    private void checkDataSources(final String databaseName, final 
Collection<ReadwriteSplittingDataSourceRuleConfiguration> configs,
+    private void checkDataSources(final String databaseName, final 
Collection<ReadwriteSplittingDataSourceGroupRuleConfiguration> configs,
                                   final Map<String, DataSource> dataSourceMap, 
final Collection<ShardingSphereRule> builtRules) {
         Collection<String> builtWriteDataSourceNames = new HashSet<>();
         Collection<String> builtReadDataSourceNames = new HashSet<>();
@@ -58,7 +58,7 @@ public final class ReadwriteSplittingRuleConfigurationChecker 
implements RuleCon
     private void checkLoadBalancer(final String databaseName, final 
ReadwriteSplittingRuleConfiguration ruleConfig) {
         Map<String, LoadBalanceAlgorithm> loadBalancers = 
ruleConfig.getLoadBalancers().entrySet().stream()
                 .collect(Collectors.toMap(Entry::getKey, entry -> 
TypedSPILoader.getService(LoadBalanceAlgorithm.class, 
entry.getValue().getType(), entry.getValue().getProps())));
-        for (ReadwriteSplittingDataSourceRuleConfiguration each : 
ruleConfig.getDataSources()) {
+        for (ReadwriteSplittingDataSourceGroupRuleConfiguration each : 
ruleConfig.getDataSourceGroups()) {
             if (Strings.isNullOrEmpty(each.getLoadBalancerName())) {
                 continue;
             }
@@ -71,7 +71,7 @@ public final class ReadwriteSplittingRuleConfigurationChecker 
implements RuleCon
     @Override
     public Collection<String> getRequiredDataSourceNames(final 
ReadwriteSplittingRuleConfiguration ruleConfig) {
         Collection<String> result = new LinkedHashSet<>();
-        for (ReadwriteSplittingDataSourceRuleConfiguration each : 
ruleConfig.getDataSources()) {
+        for (ReadwriteSplittingDataSourceGroupRuleConfiguration each : 
ruleConfig.getDataSourceGroups()) {
             if (null != each.getWriteDataSourceName()) {
                 result.add(each.getWriteDataSourceName());
             }
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceGroupRule.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceGroupRule.java
index 74b8c050eef..afd5e3048ad 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceGroupRule.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceGroupRule.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.readwritesplitting.rule;
 
 import lombok.Getter;
 import 
org.apache.shardingsphere.infra.algorithm.loadbalancer.core.LoadBalanceAlgorithm;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.api.transaction.TransactionalReadQueryStrategy;
 import 
org.apache.shardingsphere.readwritesplitting.group.ReadwriteSplittingGroup;
 import 
org.apache.shardingsphere.readwritesplitting.group.type.StaticReadwriteSplittingGroup;
@@ -43,7 +43,7 @@ public final class ReadwriteSplittingDataSourceGroupRule {
     
     private final Collection<String> disabledDataSourceNames = new HashSet<>();
     
-    public ReadwriteSplittingDataSourceGroupRule(final 
ReadwriteSplittingDataSourceRuleConfiguration config,
+    public ReadwriteSplittingDataSourceGroupRule(final 
ReadwriteSplittingDataSourceGroupRuleConfiguration config,
                                                  final 
TransactionalReadQueryStrategy transactionalReadQueryStrategy, final 
LoadBalanceAlgorithm loadBalancer) {
         name = config.getName();
         this.transactionalReadQueryStrategy = transactionalReadQueryStrategy;
@@ -51,7 +51,7 @@ public final class ReadwriteSplittingDataSourceGroupRule {
         readwriteSplittingGroup = createStaticReadwriteSplittingGroup(config);
     }
     
-    private StaticReadwriteSplittingGroup 
createStaticReadwriteSplittingGroup(final 
ReadwriteSplittingDataSourceRuleConfiguration config) {
+    private StaticReadwriteSplittingGroup 
createStaticReadwriteSplittingGroup(final 
ReadwriteSplittingDataSourceGroupRuleConfiguration config) {
         return new 
StaticReadwriteSplittingGroup(config.getWriteDataSourceName(), 
config.getReadDataSourceNames());
     }
     
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRule.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRule.java
index 4b8c4bdb86e..8921f042104 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRule.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRule.java
@@ -27,7 +27,7 @@ import 
org.apache.shardingsphere.infra.rule.attribute.RuleAttributes;
 import org.apache.shardingsphere.infra.rule.scope.DatabaseRule;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.constant.ReadwriteSplittingDataSourceType;
 import 
org.apache.shardingsphere.readwritesplitting.exception.ReadwriteSplittingRuleExceptionIdentifier;
 import 
org.apache.shardingsphere.readwritesplitting.exception.actual.InvalidReadwriteSplittingActualDataSourceInlineExpressionException;
@@ -70,8 +70,8 @@ public final class ReadwriteSplittingRule implements 
DatabaseRule {
     }
     
     private Map<String, LoadBalanceAlgorithm> createLoadBalancers(final 
ReadwriteSplittingRuleConfiguration ruleConfig) {
-        Map<String, LoadBalanceAlgorithm> result = new 
HashMap<>(ruleConfig.getDataSources().size(), 1F);
-        for (ReadwriteSplittingDataSourceRuleConfiguration each : 
ruleConfig.getDataSources()) {
+        Map<String, LoadBalanceAlgorithm> result = new 
HashMap<>(ruleConfig.getDataSourceGroups().size(), 1F);
+        for (ReadwriteSplittingDataSourceGroupRuleConfiguration each : 
ruleConfig.getDataSourceGroups()) {
             if 
(ruleConfig.getLoadBalancers().containsKey(each.getLoadBalancerName())) {
                 AlgorithmConfiguration algorithmConfig = 
ruleConfig.getLoadBalancers().get(each.getLoadBalancerName());
                 result.put(each.getName() + "." + each.getLoadBalancerName(), 
TypedSPILoader.getService(LoadBalanceAlgorithm.class, 
algorithmConfig.getType(), algorithmConfig.getProps()));
@@ -81,19 +81,19 @@ public final class ReadwriteSplittingRule implements 
DatabaseRule {
     }
     
     private Map<String, ReadwriteSplittingDataSourceGroupRule> 
createDataSourceGroupRules(final String databaseName, final 
ReadwriteSplittingRuleConfiguration ruleConfig) {
-        Map<String, ReadwriteSplittingDataSourceGroupRule> result = new 
HashMap<>(ruleConfig.getDataSources().size(), 1F);
-        for (ReadwriteSplittingDataSourceRuleConfiguration each : 
ruleConfig.getDataSources()) {
+        Map<String, ReadwriteSplittingDataSourceGroupRule> result = new 
HashMap<>(ruleConfig.getDataSourceGroups().size(), 1F);
+        for (ReadwriteSplittingDataSourceGroupRuleConfiguration each : 
ruleConfig.getDataSourceGroups()) {
             result.putAll(createDataSourceGroupRules(databaseName, each));
         }
         return result;
     }
     
-    private Map<String, ReadwriteSplittingDataSourceGroupRule> 
createDataSourceGroupRules(final String databaseName, final 
ReadwriteSplittingDataSourceRuleConfiguration config) {
+    private Map<String, ReadwriteSplittingDataSourceGroupRule> 
createDataSourceGroupRules(final String databaseName, final 
ReadwriteSplittingDataSourceGroupRuleConfiguration config) {
         LoadBalanceAlgorithm loadBalanceAlgorithm = 
loadBalancers.getOrDefault(config.getName() + "." + 
config.getLoadBalancerName(), 
TypedSPILoader.getService(LoadBalanceAlgorithm.class, null));
         return createStaticDataSourceGroupRules(databaseName, config, 
loadBalanceAlgorithm);
     }
     
-    private Map<String, ReadwriteSplittingDataSourceGroupRule> 
createStaticDataSourceGroupRules(final String databaseName, final 
ReadwriteSplittingDataSourceRuleConfiguration config,
+    private Map<String, ReadwriteSplittingDataSourceGroupRule> 
createStaticDataSourceGroupRules(final String databaseName, final 
ReadwriteSplittingDataSourceGroupRuleConfiguration config,
                                                                                
                 final LoadBalanceAlgorithm loadBalanceAlgorithm) {
         List<String> inlineLogicDataSourceNames = 
InlineExpressionParserFactory.newInstance(config.getName()).splitAndEvaluate();
         List<String> inlineWriteDataSourceNames = 
InlineExpressionParserFactory.newInstance(config.getWriteDataSourceName()).splitAndEvaluate();
@@ -107,18 +107,18 @@ public final class ReadwriteSplittingRule implements 
DatabaseRule {
                         ReadwriteSplittingDataSourceType.READ, new 
ReadwriteSplittingRuleExceptionIdentifier(databaseName, config.getName()))));
         Map<String, ReadwriteSplittingDataSourceGroupRule> result = new 
HashMap<>(inlineLogicDataSourceNames.size(), 1F);
         for (int i = 0; i < inlineLogicDataSourceNames.size(); i++) {
-            ReadwriteSplittingDataSourceRuleConfiguration staticConfig = 
createStaticDataSourceRuleConfiguration(
+            ReadwriteSplittingDataSourceGroupRuleConfiguration staticConfig = 
createStaticDataSourceGroupRuleConfiguration(
                     config, i, inlineLogicDataSourceNames, 
inlineWriteDataSourceNames, inlineReadDataSourceNames);
             result.put(inlineLogicDataSourceNames.get(i), new 
ReadwriteSplittingDataSourceGroupRule(staticConfig, 
config.getTransactionalReadQueryStrategy(), loadBalanceAlgorithm));
         }
         return result;
     }
     
-    private ReadwriteSplittingDataSourceRuleConfiguration 
createStaticDataSourceRuleConfiguration(final 
ReadwriteSplittingDataSourceRuleConfiguration config, final int index,
-                                                                               
                   final List<String> logicDataSourceNames, final List<String> 
writeDatasourceNames,
-                                                                               
                   final List<List<String>> readDatasourceNames) {
+    private ReadwriteSplittingDataSourceGroupRuleConfiguration 
createStaticDataSourceGroupRuleConfiguration(final 
ReadwriteSplittingDataSourceGroupRuleConfiguration config, final int index,
+                                                                               
                             final List<String> logicDataSourceNames, final 
List<String> writeDatasourceNames,
+                                                                               
                             final List<List<String>> readDatasourceNames) {
         List<String> readDataSourceNames = 
readDatasourceNames.stream().map(each -> 
each.get(index)).collect(Collectors.toList());
-        return new 
ReadwriteSplittingDataSourceRuleConfiguration(logicDataSourceNames.get(index), 
writeDatasourceNames.get(index), readDataSourceNames, 
config.getLoadBalancerName());
+        return new 
ReadwriteSplittingDataSourceGroupRuleConfiguration(logicDataSourceNames.get(index),
 writeDatasourceNames.get(index), readDataSourceNames, 
config.getLoadBalancerName());
     }
     
     /**
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/changed/ReadwriteSplittingDataSourceChangedProcessor.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/changed/ReadwriteSplittingDataSourceChangedProcessor.java
index fbf250a388c..9d0791a81bc 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/changed/ReadwriteSplittingDataSourceChangedProcessor.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/changed/ReadwriteSplittingDataSourceChangedProcessor.java
@@ -26,7 +26,7 @@ import 
org.apache.shardingsphere.infra.rule.event.rule.drop.DropRuleItemEvent;
 import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
 import 
org.apache.shardingsphere.mode.spi.RuleItemConfigurationChangedProcessor;
 import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.api.transaction.TransactionalReadQueryStrategy;
 import 
org.apache.shardingsphere.readwritesplitting.metadata.nodepath.ReadwriteSplittingRuleNodePathProvider;
 import 
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingRule;
@@ -39,12 +39,14 @@ import java.util.Optional;
 /**
  * Readwrite-splitting data source changed processor.
  */
-public final class ReadwriteSplittingDataSourceChangedProcessor implements 
RuleItemConfigurationChangedProcessor<ReadwriteSplittingRuleConfiguration, 
ReadwriteSplittingDataSourceRuleConfiguration> {
+public final class ReadwriteSplittingDataSourceChangedProcessor
+        implements
+            
RuleItemConfigurationChangedProcessor<ReadwriteSplittingRuleConfiguration, 
ReadwriteSplittingDataSourceGroupRuleConfiguration> {
     
     @Override
-    public ReadwriteSplittingDataSourceRuleConfiguration 
swapRuleItemConfiguration(final AlterRuleItemEvent event, final String 
yamlContent) {
+    public ReadwriteSplittingDataSourceGroupRuleConfiguration 
swapRuleItemConfiguration(final AlterRuleItemEvent event, final String 
yamlContent) {
         YamlReadwriteSplittingDataSourceRuleConfiguration 
yamlDataSourceRuleConfig = YamlEngine.unmarshal(yamlContent, 
YamlReadwriteSplittingDataSourceRuleConfiguration.class);
-        return new 
ReadwriteSplittingDataSourceRuleConfiguration(((AlterNamedRuleItemEvent) 
event).getItemName(), yamlDataSourceRuleConfig.getWriteDataSourceName(),
+        return new 
ReadwriteSplittingDataSourceGroupRuleConfiguration(((AlterNamedRuleItemEvent) 
event).getItemName(), yamlDataSourceRuleConfig.getWriteDataSourceName(),
                 yamlDataSourceRuleConfig.getReadDataSourceNames(), 
getTransactionalReadQueryStrategy(yamlDataSourceRuleConfig), 
yamlDataSourceRuleConfig.getLoadBalancerName());
     }
     
@@ -63,15 +65,15 @@ public final class 
ReadwriteSplittingDataSourceChangedProcessor implements RuleI
     
     @Override
     public void changeRuleItemConfiguration(final AlterRuleItemEvent event, 
final ReadwriteSplittingRuleConfiguration currentRuleConfig,
-                                            final 
ReadwriteSplittingDataSourceRuleConfiguration toBeChangedItemConfig) {
+                                            final 
ReadwriteSplittingDataSourceGroupRuleConfiguration toBeChangedItemConfig) {
         // TODO refactor DistSQL to only persist config
-        currentRuleConfig.getDataSources().removeIf(each -> 
each.getName().equals(toBeChangedItemConfig.getName()));
-        currentRuleConfig.getDataSources().add(toBeChangedItemConfig);
+        currentRuleConfig.getDataSourceGroups().removeIf(each -> 
each.getName().equals(toBeChangedItemConfig.getName()));
+        currentRuleConfig.getDataSourceGroups().add(toBeChangedItemConfig);
     }
     
     @Override
     public void dropRuleItemConfiguration(final DropRuleItemEvent event, final 
ReadwriteSplittingRuleConfiguration currentRuleConfig) {
-        currentRuleConfig.getDataSources().removeIf(each -> 
each.getName().equals(((DropNamedRuleItemEvent) event).getItemName()));
+        currentRuleConfig.getDataSourceGroups().removeIf(each -> 
each.getName().equals(((DropNamedRuleItemEvent) event).getItemName()));
     }
     
     @Override
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/YamlReadwriteSplittingDataNodeRuleConfigurationSwapper.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/YamlReadwriteSplittingDataNodeRuleConfigurationSwapper.java
index 34303795d04..2013676313a 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/YamlReadwriteSplittingDataNodeRuleConfigurationSwapper.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/YamlReadwriteSplittingDataNodeRuleConfigurationSwapper.java
@@ -26,7 +26,7 @@ import 
org.apache.shardingsphere.infra.algorithm.core.yaml.YamlAlgorithmConfigur
 import 
org.apache.shardingsphere.infra.algorithm.core.yaml.YamlAlgorithmConfigurationSwapper;
 import 
org.apache.shardingsphere.infra.yaml.config.swapper.rule.YamlDataNodeRuleConfigurationSwapper;
 import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.api.transaction.TransactionalReadQueryStrategy;
 import 
org.apache.shardingsphere.readwritesplitting.constant.ReadwriteSplittingOrder;
 import 
org.apache.shardingsphere.readwritesplitting.metadata.nodepath.ReadwriteSplittingRuleNodePathProvider;
@@ -57,19 +57,19 @@ public final class 
YamlReadwriteSplittingDataNodeRuleConfigurationSwapper implem
             result.add(new 
YamlDataNode(readwriteSplittingRuleNodePath.getNamedItem(ReadwriteSplittingRuleNodePathProvider.LOAD_BALANCERS).getPath(entry.getKey()),
                     
YamlEngine.marshal(algorithmSwapper.swapToYamlConfiguration(entry.getValue()))));
         }
-        for (ReadwriteSplittingDataSourceRuleConfiguration each : 
data.getDataSources()) {
+        for (ReadwriteSplittingDataSourceGroupRuleConfiguration each : 
data.getDataSourceGroups()) {
             result.add(new 
YamlDataNode(readwriteSplittingRuleNodePath.getNamedItem(ReadwriteSplittingRuleNodePathProvider.DATA_SOURCES).getPath(each.getName()),
                     YamlEngine.marshal(swapToYamlConfiguration(each))));
         }
         return result;
     }
     
-    private YamlReadwriteSplittingDataSourceRuleConfiguration 
swapToYamlConfiguration(final ReadwriteSplittingDataSourceRuleConfiguration 
dataSourceRuleConfig) {
+    private YamlReadwriteSplittingDataSourceRuleConfiguration 
swapToYamlConfiguration(final 
ReadwriteSplittingDataSourceGroupRuleConfiguration dataSourceRuleGroupConfig) {
         YamlReadwriteSplittingDataSourceRuleConfiguration result = new 
YamlReadwriteSplittingDataSourceRuleConfiguration();
-        
result.setWriteDataSourceName(dataSourceRuleConfig.getWriteDataSourceName());
-        
result.setReadDataSourceNames(dataSourceRuleConfig.getReadDataSourceNames());
-        
result.setTransactionalReadQueryStrategy(dataSourceRuleConfig.getTransactionalReadQueryStrategy().name());
-        result.setLoadBalancerName(dataSourceRuleConfig.getLoadBalancerName());
+        
result.setWriteDataSourceName(dataSourceRuleGroupConfig.getWriteDataSourceName());
+        
result.setReadDataSourceNames(dataSourceRuleGroupConfig.getReadDataSourceNames());
+        
result.setTransactionalReadQueryStrategy(dataSourceRuleGroupConfig.getTransactionalReadQueryStrategy().name());
+        
result.setLoadBalancerName(dataSourceRuleGroupConfig.getLoadBalancerName());
         return result;
     }
     
@@ -79,19 +79,19 @@ public final class 
YamlReadwriteSplittingDataNodeRuleConfigurationSwapper implem
         if (validDataNodes.isEmpty()) {
             return Optional.empty();
         }
-        Collection<ReadwriteSplittingDataSourceRuleConfiguration> dataSources 
= new LinkedList<>();
+        Collection<ReadwriteSplittingDataSourceGroupRuleConfiguration> 
dataSourceGroups = new LinkedList<>();
         Map<String, AlgorithmConfiguration> loadBalancerMap = new 
LinkedHashMap<>();
         for (YamlDataNode each : validDataNodes) {
             
readwriteSplittingRuleNodePath.getNamedItem(ReadwriteSplittingRuleNodePathProvider.DATA_SOURCES).getName(each.getKey())
-                    .ifPresent(optional -> 
dataSources.add(swapDataSource(optional, YamlEngine.unmarshal(each.getValue(), 
YamlReadwriteSplittingDataSourceRuleConfiguration.class))));
+                    .ifPresent(optional -> 
dataSourceGroups.add(swapDataSourceGroup(optional, 
YamlEngine.unmarshal(each.getValue(), 
YamlReadwriteSplittingDataSourceRuleConfiguration.class))));
             
readwriteSplittingRuleNodePath.getNamedItem(ReadwriteSplittingRuleNodePathProvider.LOAD_BALANCERS).getName(each.getKey())
                     .ifPresent(optional -> loadBalancerMap.put(optional, 
algorithmSwapper.swapToObject(YamlEngine.unmarshal(each.getValue(), 
YamlAlgorithmConfiguration.class))));
         }
-        return Optional.of(new 
ReadwriteSplittingRuleConfiguration(dataSources, loadBalancerMap));
+        return Optional.of(new 
ReadwriteSplittingRuleConfiguration(dataSourceGroups, loadBalancerMap));
     }
     
-    private ReadwriteSplittingDataSourceRuleConfiguration swapDataSource(final 
String name, final YamlReadwriteSplittingDataSourceRuleConfiguration 
yamlDataSourceRuleConfig) {
-        return new ReadwriteSplittingDataSourceRuleConfiguration(name, 
yamlDataSourceRuleConfig.getWriteDataSourceName(), 
yamlDataSourceRuleConfig.getReadDataSourceNames(),
+    private ReadwriteSplittingDataSourceGroupRuleConfiguration 
swapDataSourceGroup(final String name, final 
YamlReadwriteSplittingDataSourceRuleConfiguration yamlDataSourceRuleConfig) {
+        return new ReadwriteSplittingDataSourceGroupRuleConfiguration(name, 
yamlDataSourceRuleConfig.getWriteDataSourceName(), 
yamlDataSourceRuleConfig.getReadDataSourceNames(),
                 getTransactionalReadQueryStrategy(yamlDataSourceRuleConfig), 
yamlDataSourceRuleConfig.getLoadBalancerName());
     }
     
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/YamlReadwriteSplittingRuleConfigurationSwapper.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/YamlReadwriteSplittingRuleConfigurationSwapper.java
index feccff89f82..d6b8d969c57 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/YamlReadwriteSplittingRuleConfigurationSwapper.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/YamlReadwriteSplittingRuleConfigurationSwapper.java
@@ -22,7 +22,7 @@ import 
org.apache.shardingsphere.infra.algorithm.core.config.AlgorithmConfigurat
 import 
org.apache.shardingsphere.infra.algorithm.core.yaml.YamlAlgorithmConfigurationSwapper;
 import 
org.apache.shardingsphere.infra.yaml.config.swapper.rule.YamlRuleConfigurationSwapper;
 import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.api.transaction.TransactionalReadQueryStrategy;
 import 
org.apache.shardingsphere.readwritesplitting.constant.ReadwriteSplittingOrder;
 import 
org.apache.shardingsphere.readwritesplitting.yaml.config.YamlReadwriteSplittingRuleConfiguration;
@@ -45,26 +45,26 @@ public final class 
YamlReadwriteSplittingRuleConfigurationSwapper implements Yam
     @Override
     public YamlReadwriteSplittingRuleConfiguration 
swapToYamlConfiguration(final ReadwriteSplittingRuleConfiguration data) {
         YamlReadwriteSplittingRuleConfiguration result = new 
YamlReadwriteSplittingRuleConfiguration();
-        result.setDataSources(data.getDataSources().stream().collect(
-                
Collectors.toMap(ReadwriteSplittingDataSourceRuleConfiguration::getName, 
this::swapToYamlConfiguration, (oldValue, currentValue) -> oldValue, 
LinkedHashMap::new)));
+        result.setDataSources(data.getDataSourceGroups().stream().collect(
+                
Collectors.toMap(ReadwriteSplittingDataSourceGroupRuleConfiguration::getName, 
this::swapToYamlConfiguration, (oldValue, currentValue) -> oldValue, 
LinkedHashMap::new)));
         if (null != data.getLoadBalancers()) {
             data.getLoadBalancers().forEach((key, value) -> 
result.getLoadBalancers().put(key, 
algorithmSwapper.swapToYamlConfiguration(value)));
         }
         return result;
     }
     
-    private YamlReadwriteSplittingDataSourceRuleConfiguration 
swapToYamlConfiguration(final ReadwriteSplittingDataSourceRuleConfiguration 
dataSourceRuleConfig) {
+    private YamlReadwriteSplittingDataSourceRuleConfiguration 
swapToYamlConfiguration(final 
ReadwriteSplittingDataSourceGroupRuleConfiguration dataSourceGroupRuleConfig) {
         YamlReadwriteSplittingDataSourceRuleConfiguration result = new 
YamlReadwriteSplittingDataSourceRuleConfiguration();
-        
result.setWriteDataSourceName(dataSourceRuleConfig.getWriteDataSourceName());
-        
result.setReadDataSourceNames(dataSourceRuleConfig.getReadDataSourceNames());
-        
result.setTransactionalReadQueryStrategy(dataSourceRuleConfig.getTransactionalReadQueryStrategy().name());
-        result.setLoadBalancerName(dataSourceRuleConfig.getLoadBalancerName());
+        
result.setWriteDataSourceName(dataSourceGroupRuleConfig.getWriteDataSourceName());
+        
result.setReadDataSourceNames(dataSourceGroupRuleConfig.getReadDataSourceNames());
+        
result.setTransactionalReadQueryStrategy(dataSourceGroupRuleConfig.getTransactionalReadQueryStrategy().name());
+        
result.setLoadBalancerName(dataSourceGroupRuleConfig.getLoadBalancerName());
         return result;
     }
     
     @Override
     public ReadwriteSplittingRuleConfiguration swapToObject(final 
YamlReadwriteSplittingRuleConfiguration yamlConfig) {
-        Collection<ReadwriteSplittingDataSourceRuleConfiguration> dataSources 
= yamlConfig.getDataSources().entrySet().stream()
+        Collection<ReadwriteSplittingDataSourceGroupRuleConfiguration> 
dataSources = yamlConfig.getDataSources().entrySet().stream()
                 .map(entry -> swapToObject(entry.getKey(), 
entry.getValue())).collect(Collectors.toList());
         Map<String, AlgorithmConfiguration> loadBalancerMap = null == 
yamlConfig.getLoadBalancers()
                 ? Collections.emptyMap()
@@ -72,8 +72,8 @@ public final class 
YamlReadwriteSplittingRuleConfigurationSwapper implements Yam
         return new ReadwriteSplittingRuleConfiguration(dataSources, 
loadBalancerMap);
     }
     
-    private ReadwriteSplittingDataSourceRuleConfiguration swapToObject(final 
String name, final YamlReadwriteSplittingDataSourceRuleConfiguration 
yamlDataSourceRuleConfig) {
-        return new ReadwriteSplittingDataSourceRuleConfiguration(name, 
yamlDataSourceRuleConfig.getWriteDataSourceName(), 
yamlDataSourceRuleConfig.getReadDataSourceNames(),
+    private ReadwriteSplittingDataSourceGroupRuleConfiguration 
swapToObject(final String name, final 
YamlReadwriteSplittingDataSourceRuleConfiguration yamlDataSourceRuleConfig) {
+        return new ReadwriteSplittingDataSourceGroupRuleConfiguration(name, 
yamlDataSourceRuleConfig.getWriteDataSourceName(), 
yamlDataSourceRuleConfig.getReadDataSourceNames(),
                 getTransactionalReadQueryStrategy(yamlDataSourceRuleConfig), 
yamlDataSourceRuleConfig.getLoadBalancerName());
     }
     
diff --git 
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/checker/ReadwriteSplittingRuleConfigurationCheckerTest.java
 
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/checker/ReadwriteSplittingRuleConfigurationCheckerTest.java
index 9ff2b3eef20..0a48221bf6d 100644
--- 
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/checker/ReadwriteSplittingRuleConfigurationCheckerTest.java
+++ 
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/checker/ReadwriteSplittingRuleConfigurationCheckerTest.java
@@ -25,7 +25,7 @@ import 
org.apache.shardingsphere.infra.rule.attribute.RuleAttributes;
 import 
org.apache.shardingsphere.infra.rule.attribute.datasource.DataSourceMapperRuleAttribute;
 import org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPILoader;
 import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.exception.actual.ReadwriteSplittingActualDataSourceNotFoundException;
 import 
org.apache.shardingsphere.readwritesplitting.exception.actual.DuplicateReadwriteSplittingActualDataSourceException;
 import 
org.apache.shardingsphere.readwritesplitting.exception.actual.MissingRequiredReadwriteSplittingActualDataSourceException;
@@ -59,9 +59,9 @@ class ReadwriteSplittingRuleConfigurationCheckerTest {
     
     private ReadwriteSplittingRuleConfiguration createInvalidConfiguration() {
         ReadwriteSplittingRuleConfiguration result = 
mock(ReadwriteSplittingRuleConfiguration.class);
-        ReadwriteSplittingDataSourceRuleConfiguration dataSourceConfig = 
mock(ReadwriteSplittingDataSourceRuleConfiguration.class);
-        when(dataSourceConfig.getName()).thenReturn("readwrite_ds");
-        
when(result.getDataSources()).thenReturn(Collections.singleton(dataSourceConfig));
+        ReadwriteSplittingDataSourceGroupRuleConfiguration 
dataSourceGroupConfig = 
mock(ReadwriteSplittingDataSourceGroupRuleConfiguration.class);
+        when(dataSourceGroupConfig.getName()).thenReturn("readwrite_ds");
+        
when(result.getDataSourceGroups()).thenReturn(Collections.singleton(dataSourceGroupConfig));
         return result;
     }
     
@@ -69,9 +69,9 @@ class ReadwriteSplittingRuleConfigurationCheckerTest {
     @Test
     void assertCheckWhenConfigInvalidWriteDataSource() {
         ReadwriteSplittingRuleConfiguration config = 
mock(ReadwriteSplittingRuleConfiguration.class);
-        List<ReadwriteSplittingDataSourceRuleConfiguration> configs = 
Arrays.asList(createDataSourceRuleConfiguration(
-                "write_ds_0", Arrays.asList("read_ds_0", "read_ds_1")), 
createDataSourceRuleConfiguration("write_ds_2", Arrays.asList("read_ds_0", 
"read_ds_1")));
-        when(config.getDataSources()).thenReturn(configs);
+        List<ReadwriteSplittingDataSourceGroupRuleConfiguration> configs = 
Arrays.asList(createDataSourceGroupRuleConfiguration(
+                "write_ds_0", Arrays.asList("read_ds_0", "read_ds_1")), 
createDataSourceGroupRuleConfiguration("write_ds_2", Arrays.asList("read_ds_0", 
"read_ds_1")));
+        when(config.getDataSourceGroups()).thenReturn(configs);
         RuleConfigurationChecker checker = 
OrderedSPILoader.getServicesByClass(RuleConfigurationChecker.class, 
Collections.singleton(config.getClass())).get(config.getClass());
         
assertThrows(ReadwriteSplittingActualDataSourceNotFoundException.class, () -> 
checker.check("test", config, mockDataSources(), Collections.emptyList()));
     }
@@ -80,9 +80,9 @@ class ReadwriteSplittingRuleConfigurationCheckerTest {
     @Test
     void assertCheckWhenConfigInvalidReadDataSource() {
         ReadwriteSplittingRuleConfiguration config = 
mock(ReadwriteSplittingRuleConfiguration.class);
-        List<ReadwriteSplittingDataSourceRuleConfiguration> configs = 
Arrays.asList(createDataSourceRuleConfiguration(
-                "write_ds_0", Arrays.asList("read_ds_0", "read_ds_0")), 
createDataSourceRuleConfiguration("write_ds_1", Arrays.asList("read_ds_0", 
"read_ds_0")));
-        when(config.getDataSources()).thenReturn(configs);
+        List<ReadwriteSplittingDataSourceGroupRuleConfiguration> configs = 
Arrays.asList(createDataSourceGroupRuleConfiguration(
+                "write_ds_0", Arrays.asList("read_ds_0", "read_ds_0")), 
createDataSourceGroupRuleConfiguration("write_ds_1", Arrays.asList("read_ds_0", 
"read_ds_0")));
+        when(config.getDataSourceGroups()).thenReturn(configs);
         RuleConfigurationChecker checker = 
OrderedSPILoader.getServicesByClass(RuleConfigurationChecker.class, 
Collections.singleton(config.getClass())).get(config.getClass());
         
assertThrows(DuplicateReadwriteSplittingActualDataSourceException.class, () -> 
checker.check("test", config, mockDataSources(), Collections.emptyList()));
     }
@@ -91,8 +91,8 @@ class ReadwriteSplittingRuleConfigurationCheckerTest {
     @Test
     void assertCheckWeightLoadBalanceInvalidDataSourceName() {
         ReadwriteSplittingRuleConfiguration config = 
mock(ReadwriteSplittingRuleConfiguration.class);
-        Collection<ReadwriteSplittingDataSourceRuleConfiguration> configs = 
Collections.singleton(createDataSourceRuleConfiguration("write_ds_0", 
Arrays.asList("read_ds_0", "read_ds_1")));
-        when(config.getDataSources()).thenReturn(configs);
+        Collection<ReadwriteSplittingDataSourceGroupRuleConfiguration> configs 
= Collections.singleton(createDataSourceGroupRuleConfiguration("write_ds_0", 
Arrays.asList("read_ds_0", "read_ds_1")));
+        when(config.getDataSourceGroups()).thenReturn(configs);
         AlgorithmConfiguration algorithm = new 
AlgorithmConfiguration("WEIGHT", PropertiesBuilder.build(new 
Property("read_ds_2", "1"), new Property("read_ds_1", "2")));
         
when(config.getLoadBalancers()).thenReturn(Collections.singletonMap("weight_ds",
 algorithm));
         RuleConfigurationChecker checker = 
OrderedSPILoader.getServicesByClass(RuleConfigurationChecker.class, 
Collections.singleton(config.getClass())).get(config.getClass());
@@ -113,16 +113,16 @@ class ReadwriteSplittingRuleConfigurationCheckerTest {
     
     private ReadwriteSplittingRuleConfiguration 
createContainsOtherRulesDatasourceConfiguration() {
         ReadwriteSplittingRuleConfiguration result = 
mock(ReadwriteSplittingRuleConfiguration.class);
-        ReadwriteSplittingDataSourceRuleConfiguration dataSourceConfig = 
mock(ReadwriteSplittingDataSourceRuleConfiguration.class);
-        when(dataSourceConfig.getName()).thenReturn("readwrite_ds");
-        
when(dataSourceConfig.getWriteDataSourceName()).thenReturn("otherDatasourceName");
-        
when(dataSourceConfig.getReadDataSourceNames()).thenReturn(Arrays.asList("read_ds_0",
 "read_ds_1"));
-        
when(result.getDataSources()).thenReturn(Collections.singleton(dataSourceConfig));
+        ReadwriteSplittingDataSourceGroupRuleConfiguration 
dataSourceGroupConfig = 
mock(ReadwriteSplittingDataSourceGroupRuleConfiguration.class);
+        when(dataSourceGroupConfig.getName()).thenReturn("readwrite_ds");
+        
when(dataSourceGroupConfig.getWriteDataSourceName()).thenReturn("otherDatasourceName");
+        
when(dataSourceGroupConfig.getReadDataSourceNames()).thenReturn(Arrays.asList("read_ds_0",
 "read_ds_1"));
+        
when(result.getDataSourceGroups()).thenReturn(Collections.singleton(dataSourceGroupConfig));
         return result;
     }
     
-    private ReadwriteSplittingDataSourceRuleConfiguration 
createDataSourceRuleConfiguration(final String writeDataSource, final 
List<String> readDataSources) {
-        ReadwriteSplittingDataSourceRuleConfiguration result = 
mock(ReadwriteSplittingDataSourceRuleConfiguration.class);
+    private ReadwriteSplittingDataSourceGroupRuleConfiguration 
createDataSourceGroupRuleConfiguration(final String writeDataSource, final 
List<String> readDataSources) {
+        ReadwriteSplittingDataSourceGroupRuleConfiguration result = 
mock(ReadwriteSplittingDataSourceGroupRuleConfiguration.class);
         when(result.getName()).thenReturn("readwrite_ds");
         when(result.getWriteDataSourceName()).thenReturn(writeDataSource);
         when(result.getReadDataSourceNames()).thenReturn(readDataSources);
diff --git 
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/ReadwriteSplittingSQLRouterTest.java
 
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/ReadwriteSplittingSQLRouterTest.java
index 6a3843258b1..7f487577c7a 100644
--- 
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/ReadwriteSplittingSQLRouterTest.java
+++ 
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/ReadwriteSplittingSQLRouterTest.java
@@ -36,7 +36,7 @@ import 
org.apache.shardingsphere.infra.session.connection.ConnectionContext;
 import org.apache.shardingsphere.infra.session.query.QueryContext;
 import org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPILoader;
 import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingRule;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.predicate.LockSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.dml.InsertStatement;
@@ -80,7 +80,7 @@ class ReadwriteSplittingSQLRouterTest {
     
     @BeforeEach
     void setUp() {
-        staticRule = new ReadwriteSplittingRule("logic_db", new 
ReadwriteSplittingRuleConfiguration(Collections.singleton(new 
ReadwriteSplittingDataSourceRuleConfiguration(DATASOURCE_NAME,
+        staticRule = new ReadwriteSplittingRule("logic_db", new 
ReadwriteSplittingRuleConfiguration(Collections.singleton(new 
ReadwriteSplittingDataSourceGroupRuleConfiguration(DATASOURCE_NAME,
                 WRITE_DATASOURCE, Collections.singletonList(READ_DATASOURCE), 
"")), Collections.emptyMap()), mock(InstanceContext.class));
         sqlRouter = (ReadwriteSplittingSQLRouter) 
OrderedSPILoader.getServices(SQLRouter.class, 
Collections.singleton(staticRule)).get(staticRule);
     }
diff --git 
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/qualified/type/QualifiedReadwriteSplittingTransactionalDataSourceRouterTest.java
 
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/qualified/type/QualifiedReadwriteSplittingTransactionalDataSourceRouterTest.java
index 7f7209d399e..8b051430083 100644
--- 
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/qualified/type/QualifiedReadwriteSplittingTransactionalDataSourceRouterTest.java
+++ 
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/qualified/type/QualifiedReadwriteSplittingTransactionalDataSourceRouterTest.java
@@ -21,7 +21,7 @@ import 
org.apache.shardingsphere.infra.algorithm.loadbalancer.round.robin.RoundR
 import org.apache.shardingsphere.infra.hint.HintValueContext;
 import org.apache.shardingsphere.infra.session.connection.ConnectionContext;
 import 
org.apache.shardingsphere.infra.session.connection.transaction.TransactionConnectionContext;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.api.transaction.TransactionalReadQueryStrategy;
 import 
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingDataSourceGroupRule;
 import org.junit.jupiter.api.Test;
@@ -57,14 +57,14 @@ class 
QualifiedReadwriteSplittingTransactionalDataSourceRouterTest {
     
     @Test
     void assertRoute() {
-        ReadwriteSplittingDataSourceRuleConfiguration 
readwriteSplittingDataSourceRuleConfig =
-                new 
ReadwriteSplittingDataSourceRuleConfiguration("test_config", "write_ds", 
Arrays.asList("read_ds_0", "read_ds_1"), null);
+        ReadwriteSplittingDataSourceGroupRuleConfiguration 
dataSourceGroupConfig = new ReadwriteSplittingDataSourceGroupRuleConfiguration(
+                "test_config", "write_ds", Arrays.asList("read_ds_0", 
"read_ds_1"), null);
         ReadwriteSplittingDataSourceGroupRule rule;
-        rule = new 
ReadwriteSplittingDataSourceGroupRule(readwriteSplittingDataSourceRuleConfig, 
TransactionalReadQueryStrategy.PRIMARY, null);
+        rule = new 
ReadwriteSplittingDataSourceGroupRule(dataSourceGroupConfig, 
TransactionalReadQueryStrategy.PRIMARY, null);
         assertThat(new 
QualifiedReadwriteSplittingTransactionalDataSourceRouter(new 
ConnectionContext()).route(rule), is("write_ds"));
-        rule = new 
ReadwriteSplittingDataSourceGroupRule(readwriteSplittingDataSourceRuleConfig, 
TransactionalReadQueryStrategy.FIXED, new RoundRobinLoadBalanceAlgorithm());
+        rule = new 
ReadwriteSplittingDataSourceGroupRule(dataSourceGroupConfig, 
TransactionalReadQueryStrategy.FIXED, new RoundRobinLoadBalanceAlgorithm());
         assertThat(new 
QualifiedReadwriteSplittingTransactionalDataSourceRouter(new 
ConnectionContext()).route(rule), is("read_ds_0"));
-        rule = new 
ReadwriteSplittingDataSourceGroupRule(readwriteSplittingDataSourceRuleConfig, 
TransactionalReadQueryStrategy.DYNAMIC, new RoundRobinLoadBalanceAlgorithm());
+        rule = new 
ReadwriteSplittingDataSourceGroupRule(dataSourceGroupConfig, 
TransactionalReadQueryStrategy.DYNAMIC, new RoundRobinLoadBalanceAlgorithm());
         assertThat(new 
QualifiedReadwriteSplittingTransactionalDataSourceRouter(new 
ConnectionContext()).route(rule), is("read_ds_0"));
     }
 }
diff --git 
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/standard/StandardReadwriteSplittingDataSourceRouterTest.java
 
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/standard/StandardReadwriteSplittingDataSourceRouterTest.java
index 9e6f1165c84..4fc8b3d7ea4 100644
--- 
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/standard/StandardReadwriteSplittingDataSourceRouterTest.java
+++ 
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/standard/StandardReadwriteSplittingDataSourceRouterTest.java
@@ -18,7 +18,7 @@
 package org.apache.shardingsphere.readwritesplitting.route.standard;
 
 import 
org.apache.shardingsphere.infra.algorithm.loadbalancer.round.robin.RoundRobinLoadBalanceAlgorithm;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.api.transaction.TransactionalReadQueryStrategy;
 import 
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingDataSourceGroupRule;
 import org.junit.jupiter.api.BeforeEach;
@@ -36,7 +36,7 @@ class StandardReadwriteSplittingDataSourceRouterTest {
     @BeforeEach
     void setUp() {
         rule = new ReadwriteSplittingDataSourceGroupRule(
-                new 
ReadwriteSplittingDataSourceRuleConfiguration("test_config", "write_ds", 
Arrays.asList("read_ds_0", "read_ds_1"), null),
+                new 
ReadwriteSplittingDataSourceGroupRuleConfiguration("test_config", "write_ds", 
Arrays.asList("read_ds_0", "read_ds_1"), null),
                 TransactionalReadQueryStrategy.DYNAMIC, new 
RoundRobinLoadBalanceAlgorithm());
     }
     
diff --git 
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/standard/filter/DisabledReadDataSourcesFilterTest.java
 
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/standard/filter/DisabledReadDataSourcesFilterTest.java
index 48f98185fe6..695ff5903e8 100644
--- 
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/standard/filter/DisabledReadDataSourcesFilterTest.java
+++ 
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/standard/filter/DisabledReadDataSourcesFilterTest.java
@@ -18,7 +18,7 @@
 package org.apache.shardingsphere.readwritesplitting.route.standard.filter;
 
 import 
org.apache.shardingsphere.infra.algorithm.loadbalancer.random.RandomLoadBalanceAlgorithm;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.api.transaction.TransactionalReadQueryStrategy;
 import 
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingDataSourceGroupRule;
 import org.junit.jupiter.api.BeforeEach;
@@ -37,7 +37,7 @@ class DisabledReadDataSourcesFilterTest {
     @BeforeEach
     void setUp() {
         rule = new ReadwriteSplittingDataSourceGroupRule(
-                new ReadwriteSplittingDataSourceRuleConfiguration("test_pr", 
"write_ds", Arrays.asList("read_ds_0", "read_ds_1"), null),
+                new 
ReadwriteSplittingDataSourceGroupRuleConfiguration("test_pr", "write_ds", 
Arrays.asList("read_ds_0", "read_ds_1"), null),
                 TransactionalReadQueryStrategy.DYNAMIC, new 
RandomLoadBalanceAlgorithm());
     }
     
diff --git 
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceGroupRuleTest.java
 
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceGroupRuleTest.java
index 0c9435323b7..d83ead15d18 100644
--- 
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceGroupRuleTest.java
+++ 
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceGroupRuleTest.java
@@ -18,7 +18,7 @@
 package org.apache.shardingsphere.readwritesplitting.rule;
 
 import 
org.apache.shardingsphere.infra.algorithm.loadbalancer.random.RandomLoadBalanceAlgorithm;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.api.transaction.TransactionalReadQueryStrategy;
 import org.junit.jupiter.api.Test;
 
@@ -32,7 +32,7 @@ class ReadwriteSplittingDataSourceGroupRuleTest {
     @Test
     void assertGetWriteDataSource() {
         ReadwriteSplittingDataSourceGroupRule dataSourceGroupRule = new 
ReadwriteSplittingDataSourceGroupRule(
-                new ReadwriteSplittingDataSourceRuleConfiguration("test_pr", 
"write_ds", Arrays.asList("read_ds_0", "read_ds_1"), 
TransactionalReadQueryStrategy.DYNAMIC, null),
+                new 
ReadwriteSplittingDataSourceGroupRuleConfiguration("test_pr", "write_ds", 
Arrays.asList("read_ds_0", "read_ds_1"), 
TransactionalReadQueryStrategy.DYNAMIC, null),
                 TransactionalReadQueryStrategy.DYNAMIC, new 
RandomLoadBalanceAlgorithm());
         String writeDataSourceName = dataSourceGroupRule.getWriteDataSource();
         assertThat(writeDataSourceName, is("write_ds"));
diff --git 
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRuleTest.java
 
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRuleTest.java
index 1dceb8be9a0..e08fbaf32cb 100644
--- 
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRuleTest.java
+++ 
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRuleTest.java
@@ -23,7 +23,7 @@ import 
org.apache.shardingsphere.infra.metadata.database.schema.QualifiedDataSou
 import 
org.apache.shardingsphere.infra.rule.attribute.datasource.StaticDataSourceRuleAttribute;
 import org.apache.shardingsphere.infra.state.datasource.DataSourceState;
 import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
@@ -51,8 +51,8 @@ class ReadwriteSplittingRuleTest {
     }
     
     private ReadwriteSplittingRule createReadwriteSplittingRule() {
-        ReadwriteSplittingDataSourceRuleConfiguration config =
-                new ReadwriteSplittingDataSourceRuleConfiguration("readwrite", 
"write_ds", Arrays.asList("read_ds_0", "read_ds_1"), "random");
+        ReadwriteSplittingDataSourceGroupRuleConfiguration config =
+                new 
ReadwriteSplittingDataSourceGroupRuleConfiguration("readwrite", "write_ds", 
Arrays.asList("read_ds_0", "read_ds_1"), "random");
         return new ReadwriteSplittingRule("logic_db", new 
ReadwriteSplittingRuleConfiguration(
                 Collections.singleton(config), 
Collections.singletonMap("random", new AlgorithmConfiguration("RANDOM", new 
Properties()))), mock(InstanceContext.class));
     }
@@ -93,7 +93,7 @@ class ReadwriteSplittingRuleTest {
     
     @Test
     void assertCreateReadwriteSplittingRuleWithRowValueExpressionImpl() {
-        ReadwriteSplittingDataSourceRuleConfiguration config = new 
ReadwriteSplittingDataSourceRuleConfiguration(
+        ReadwriteSplittingDataSourceGroupRuleConfiguration config = new 
ReadwriteSplittingDataSourceGroupRuleConfiguration(
                 "<GROOVY>${['readwrite']}_ds",
                 "<GROOVY>${['write']}_ds",
                 Arrays.asList("<GROOVY>read_ds_${['0']}", "read_ds_${['1']}", 
"read_ds_2", "<LITERAL>read_ds_3"),
diff --git 
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/attribute/ReadwriteSplittingDataSourceMapperRuleAttributeTest.java
 
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/attribute/ReadwriteSplittingDataSourceMapperRuleAttributeTest.java
index d2ad201b258..1cce833c0cd 100644
--- 
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/attribute/ReadwriteSplittingDataSourceMapperRuleAttributeTest.java
+++ 
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/attribute/ReadwriteSplittingDataSourceMapperRuleAttributeTest.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.readwritesplitting.rule.attribute;
 
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingDataSourceGroupRule;
 import org.junit.jupiter.api.Test;
 
@@ -40,6 +40,6 @@ class ReadwriteSplittingDataSourceMapperRuleAttributeTest {
     
     private ReadwriteSplittingDataSourceGroupRule createDataSourceGroupRule() {
         return new ReadwriteSplittingDataSourceGroupRule(
-                new ReadwriteSplittingDataSourceRuleConfiguration("readwrite", 
"write_ds", Arrays.asList("read_ds_0", "read_ds_1"), "random"), null, null);
+                new 
ReadwriteSplittingDataSourceGroupRuleConfiguration("readwrite", "write_ds", 
Arrays.asList("read_ds_0", "read_ds_1"), "random"), null, null);
     }
 }
diff --git 
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/builder/ReadwriteSplittingRuleBuilderTest.java
 
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/builder/ReadwriteSplittingRuleBuilderTest.java
index e0b79221ec6..1476ec7503a 100644
--- 
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/builder/ReadwriteSplittingRuleBuilderTest.java
+++ 
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/builder/ReadwriteSplittingRuleBuilderTest.java
@@ -21,7 +21,7 @@ import 
org.apache.shardingsphere.infra.instance.InstanceContext;
 import 
org.apache.shardingsphere.infra.rule.builder.database.DatabaseRuleBuilder;
 import org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPILoader;
 import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingRule;
 import org.apache.shardingsphere.test.fixture.database.MockedDatabaseType;
 import org.junit.jupiter.api.Test;
@@ -38,7 +38,7 @@ class ReadwriteSplittingRuleBuilderTest {
     @Test
     void assertBuild() {
         ReadwriteSplittingRuleConfiguration ruleConfig = new 
ReadwriteSplittingRuleConfiguration(Collections.singleton(
-                new ReadwriteSplittingDataSourceRuleConfiguration("name", 
"writeDataSourceName", Collections.singletonList("readDataSourceName"), 
"loadBalancerName")), Collections.emptyMap());
+                new ReadwriteSplittingDataSourceGroupRuleConfiguration("name", 
"writeDataSourceName", Collections.singletonList("readDataSourceName"), 
"loadBalancerName")), Collections.emptyMap());
         DatabaseRuleBuilder builder = 
OrderedSPILoader.getServices(DatabaseRuleBuilder.class, 
Collections.singleton(ruleConfig)).get(ruleConfig);
         assertThat(builder.build(ruleConfig, "", new MockedDatabaseType(), 
Collections.emptyMap(), Collections.emptyList(), mock(InstanceContext.class)), 
instanceOf(ReadwriteSplittingRule.class));
     }
diff --git 
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/YamlReadwriteSplittingDataNodeRuleConfigurationSwapperTest.java
 
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/YamlReadwriteSplittingDataNodeRuleConfigurationSwapperTest.java
index 02f85045d4b..ab63cc7eac4 100644
--- 
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/YamlReadwriteSplittingDataNodeRuleConfigurationSwapperTest.java
+++ 
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/YamlReadwriteSplittingDataNodeRuleConfigurationSwapperTest.java
@@ -20,7 +20,7 @@ package 
org.apache.shardingsphere.readwritesplitting.yaml.swapper;
 import 
org.apache.shardingsphere.infra.algorithm.core.config.AlgorithmConfiguration;
 import org.apache.shardingsphere.infra.util.yaml.datanode.YamlDataNode;
 import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.api.transaction.TransactionalReadQueryStrategy;
 import org.junit.jupiter.api.Test;
 
@@ -41,7 +41,7 @@ class 
YamlReadwriteSplittingDataNodeRuleConfigurationSwapperTest {
     
     @Test
     void assertSwapToDataNodesLoadBalancersEmpty() {
-        ReadwriteSplittingRuleConfiguration config = new 
ReadwriteSplittingRuleConfiguration(Collections.singleton(new 
ReadwriteSplittingDataSourceRuleConfiguration("group_0",
+        ReadwriteSplittingRuleConfiguration config = new 
ReadwriteSplittingRuleConfiguration(Collections.singleton(new 
ReadwriteSplittingDataSourceGroupRuleConfiguration("group_0",
                 "write_ds", Arrays.asList("read_ds_0", "read_ds_1"), null)), 
Collections.emptyMap());
         Collection<YamlDataNode> result = swapper.swapToDataNodes(config);
         assertThat(result.size(), is(1));
@@ -50,7 +50,7 @@ class 
YamlReadwriteSplittingDataNodeRuleConfigurationSwapperTest {
     
     @Test
     void assertSwapToDataNodesLoadBalancers() {
-        ReadwriteSplittingRuleConfiguration config = new 
ReadwriteSplittingRuleConfiguration(Collections.singleton(new 
ReadwriteSplittingDataSourceRuleConfiguration("group_0",
+        ReadwriteSplittingRuleConfiguration config = new 
ReadwriteSplittingRuleConfiguration(Collections.singleton(new 
ReadwriteSplittingDataSourceGroupRuleConfiguration("group_0",
                 "write_ds", Arrays.asList("read_ds_0", "read_ds_1"), 
"random")), Collections.singletonMap("random", new 
AlgorithmConfiguration("random", new Properties())));
         Collection<YamlDataNode> result = swapper.swapToDataNodes(config);
         assertThat(result.size(), is(2));
@@ -76,12 +76,12 @@ class 
YamlReadwriteSplittingDataNodeRuleConfigurationSwapperTest {
                 + "writeDataSourceName: write_ds\n"));
         config.add(new 
YamlDataNode("/metadata/foo_db/rules/readwrite_splitting/load_balancers/random/versions/0",
 "type: random\n"));
         ReadwriteSplittingRuleConfiguration result = 
swapper.swapToObject(config).get();
-        assertThat(result.getDataSources().size(), is(1));
-        assertThat(result.getDataSources().iterator().next().getName(), 
is("group_0"));
-        
assertThat(result.getDataSources().iterator().next().getWriteDataSourceName(), 
is("write_ds"));
-        
assertThat(result.getDataSources().iterator().next().getReadDataSourceNames().size(),
 is(2));
-        
assertThat(result.getDataSources().iterator().next().getLoadBalancerName(), 
is("random"));
-        
assertThat(result.getDataSources().iterator().next().getTransactionalReadQueryStrategy(),
 is(TransactionalReadQueryStrategy.DYNAMIC));
+        assertThat(result.getDataSourceGroups().size(), is(1));
+        assertThat(result.getDataSourceGroups().iterator().next().getName(), 
is("group_0"));
+        
assertThat(result.getDataSourceGroups().iterator().next().getWriteDataSourceName(),
 is("write_ds"));
+        
assertThat(result.getDataSourceGroups().iterator().next().getReadDataSourceNames().size(),
 is(2));
+        
assertThat(result.getDataSourceGroups().iterator().next().getLoadBalancerName(),
 is("random"));
+        
assertThat(result.getDataSourceGroups().iterator().next().getTransactionalReadQueryStrategy(),
 is(TransactionalReadQueryStrategy.DYNAMIC));
         assertThat(result.getLoadBalancers().size(), is(1));
         assertThat(result.getLoadBalancers().get("random").getType(), 
is("random"));
         assertThat(result.getLoadBalancers().get("random").getProps().size(), 
is(0));
diff --git 
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/YamlReadwriteSplittingRuleConfigurationSwapperTest.java
 
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/YamlReadwriteSplittingRuleConfigurationSwapperTest.java
index 248acfe5134..cddd6c064ea 100644
--- 
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/YamlReadwriteSplittingRuleConfigurationSwapperTest.java
+++ 
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/yaml/swapper/YamlReadwriteSplittingRuleConfigurationSwapperTest.java
@@ -20,7 +20,7 @@ package 
org.apache.shardingsphere.readwritesplitting.yaml.swapper;
 import 
org.apache.shardingsphere.infra.algorithm.core.config.AlgorithmConfiguration;
 import 
org.apache.shardingsphere.infra.algorithm.core.yaml.YamlAlgorithmConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.yaml.config.YamlReadwriteSplittingRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.yaml.config.rule.YamlReadwriteSplittingDataSourceRuleConfiguration;
 import org.junit.jupiter.api.Test;
@@ -53,23 +53,23 @@ class YamlReadwriteSplittingRuleConfigurationSwapperTest {
     }
     
     void assertReadwriteSplittingRule(final 
ReadwriteSplittingRuleConfiguration actual) {
-        ReadwriteSplittingDataSourceRuleConfiguration config = 
actual.getDataSources().iterator().next();
+        ReadwriteSplittingDataSourceGroupRuleConfiguration config = 
actual.getDataSourceGroups().iterator().next();
         assertThat(config.getName(), is("t_readwrite"));
         assertThat(config.getWriteDataSourceName(), is("write_ds"));
         assertThat(config.getLoadBalancerName(), is("random"));
     }
     
     private ReadwriteSplittingRuleConfiguration 
creatReadwriteSplittingRuleConfiguration() {
-        Collection<ReadwriteSplittingDataSourceRuleConfiguration> dataSources 
= Collections.singleton(
-                new ReadwriteSplittingDataSourceRuleConfiguration("readwrite", 
"write_ds", Arrays.asList("read_ds_0", "read_ds_1"), "random"));
+        Collection<ReadwriteSplittingDataSourceGroupRuleConfiguration> 
dataSourceGroupConfigs = Collections.singleton(
+                new 
ReadwriteSplittingDataSourceGroupRuleConfiguration("readwrite", "write_ds", 
Arrays.asList("read_ds_0", "read_ds_1"), "random"));
         Map<String, AlgorithmConfiguration> loadBalancers = 
Collections.singletonMap("myLoadBalancer", new AlgorithmConfiguration("RANDOM", 
new Properties()));
-        return new ReadwriteSplittingRuleConfiguration(dataSources, 
loadBalancers);
+        return new ReadwriteSplittingRuleConfiguration(dataSourceGroupConfigs, 
loadBalancers);
     }
     
     @Test
     void assertSwapToObject() {
         ReadwriteSplittingRuleConfiguration actual = 
getSwapper().swapToObject(createYamlReadwriteSplittingRuleConfiguration());
-        assertThat(actual.getDataSources().size(), is(1));
+        assertThat(actual.getDataSourceGroups().size(), is(1));
         assertThat(actual.getLoadBalancers().size(), is(1));
         assertReadwriteSplittingRule(actual);
     }
diff --git 
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/checker/ReadwriteSplittingRuleStatementChecker.java
 
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/checker/ReadwriteSplittingRuleStatementChecker.java
index eba0117df4e..5f3fbebdc9a 100644
--- 
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/checker/ReadwriteSplittingRuleStatementChecker.java
+++ 
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/checker/ReadwriteSplittingRuleStatementChecker.java
@@ -32,7 +32,7 @@ import 
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaDa
 import 
org.apache.shardingsphere.infra.rule.attribute.datasource.DataSourceMapperRuleAttribute;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.api.transaction.TransactionalReadQueryStrategy;
 import 
org.apache.shardingsphere.readwritesplitting.constant.ReadwriteSplittingDataSourceType;
 import 
org.apache.shardingsphere.readwritesplitting.distsql.segment.ReadwriteSplittingRuleSegment;
@@ -92,7 +92,7 @@ public final class ReadwriteSplittingRuleStatementChecker {
     
     private static void checkRuleNamesExist(final 
Collection<ReadwriteSplittingRuleSegment> segments, final 
ReadwriteSplittingRuleConfiguration currentRuleConfig, final String 
databaseName) {
         Collection<String> requiredRuleNames = 
segments.stream().map(ReadwriteSplittingRuleSegment::getName).collect(Collectors.toList());
-        Collection<String> currentRuleNames = 
currentRuleConfig.getDataSources().stream().map(ReadwriteSplittingDataSourceRuleConfiguration::getName).collect(Collectors.toList());
+        Collection<String> currentRuleNames = 
currentRuleConfig.getDataSourceGroups().stream().map(ReadwriteSplittingDataSourceGroupRuleConfiguration::getName).collect(Collectors.toList());
         Collection<String> notExistedRuleNames = 
requiredRuleNames.stream().filter(each -> 
!currentRuleNames.contains(each)).collect(Collectors.toSet());
         ShardingSpherePreconditions.checkMustEmpty(notExistedRuleNames, () -> 
new MissingRequiredRuleException("Readwrite-splitting", databaseName, 
notExistedRuleNames));
     }
@@ -132,7 +132,7 @@ public final class ReadwriteSplittingRuleStatementChecker {
                                                                      final 
Collection<ReadwriteSplittingRuleSegment> segments) {
         Collection<String> currentRuleNames = new LinkedList<>();
         if (null != currentRuleConfig) {
-            
currentRuleNames.addAll(currentRuleConfig.getDataSources().stream().map(ReadwriteSplittingDataSourceRuleConfiguration::getName).collect(Collectors.toList()));
+            
currentRuleNames.addAll(currentRuleConfig.getDataSourceGroups().stream().map(ReadwriteSplittingDataSourceGroupRuleConfiguration::getName).collect(Collectors.toList()));
         }
         Collection<String> toBeCreatedRuleNames = 
segments.stream().map(ReadwriteSplittingRuleSegment::getName).filter(currentRuleNames::contains).collect(Collectors.toList());
         ShardingSpherePreconditions.checkMustEmpty(toBeCreatedRuleNames, () -> 
new DuplicateRuleException("Readwrite-splitting", databaseName, 
toBeCreatedRuleNames));
@@ -162,7 +162,7 @@ public final class ReadwriteSplittingRuleStatementChecker {
         Collection<String> existedReadDataSourceNames = new HashSet<>();
         if (null != currentRuleConfig) {
             Collection<String> toBeAlteredRuleNames = isCreating ? 
Collections.emptySet() : getToBeAlteredRuleNames(segments);
-            for (ReadwriteSplittingDataSourceRuleConfiguration each : 
currentRuleConfig.getDataSources()) {
+            for (ReadwriteSplittingDataSourceGroupRuleConfiguration each : 
currentRuleConfig.getDataSourceGroups()) {
                 if (toBeAlteredRuleNames.contains(each.getName())) {
                     continue;
                 }
diff --git 
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/converter/ReadwriteSplittingRuleStatementConverter.java
 
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/converter/ReadwriteSplittingRuleStatementConverter.java
index 0ed49233806..aa86e12a50b 100644
--- 
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/converter/ReadwriteSplittingRuleStatementConverter.java
+++ 
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/converter/ReadwriteSplittingRuleStatementConverter.java
@@ -21,7 +21,7 @@ import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import 
org.apache.shardingsphere.infra.algorithm.core.config.AlgorithmConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.api.transaction.TransactionalReadQueryStrategy;
 import 
org.apache.shardingsphere.readwritesplitting.distsql.segment.ReadwriteSplittingRuleSegment;
 
@@ -43,25 +43,24 @@ public final class ReadwriteSplittingRuleStatementConverter 
{
      * @return readwrite-splitting rule configuration
      */
     public static ReadwriteSplittingRuleConfiguration convert(final 
Collection<ReadwriteSplittingRuleSegment> ruleSegments) {
-        Collection<ReadwriteSplittingDataSourceRuleConfiguration> dataSources 
= new LinkedList<>();
+        Collection<ReadwriteSplittingDataSourceGroupRuleConfiguration> 
dataSourceGroups = new LinkedList<>();
         Map<String, AlgorithmConfiguration> loadBalancers = new 
HashMap<>(ruleSegments.size(), 1F);
         for (ReadwriteSplittingRuleSegment each : ruleSegments) {
             if (null == each.getLoadBalancer()) {
-                dataSources.add(createDataSourceRuleConfiguration(each, null));
+                
dataSourceGroups.add(createDataSourceGroupRuleConfiguration(each, null));
             } else {
                 String loadBalancerName = getLoadBalancerName(each.getName(), 
each.getLoadBalancer().getName());
                 loadBalancers.put(loadBalancerName, createLoadBalancer(each));
-                dataSources.add(createDataSourceRuleConfiguration(each, 
loadBalancerName));
+                
dataSourceGroups.add(createDataSourceGroupRuleConfiguration(each, 
loadBalancerName));
             }
         }
-        return new ReadwriteSplittingRuleConfiguration(dataSources, 
loadBalancers);
+        return new ReadwriteSplittingRuleConfiguration(dataSourceGroups, 
loadBalancers);
     }
     
-    private static ReadwriteSplittingDataSourceRuleConfiguration 
createDataSourceRuleConfiguration(final ReadwriteSplittingRuleSegment segment,
-                                                                               
                    final String loadBalancerName) {
+    private static ReadwriteSplittingDataSourceGroupRuleConfiguration 
createDataSourceGroupRuleConfiguration(final ReadwriteSplittingRuleSegment 
segment, final String loadBalancerName) {
         return null == segment.getTransactionalReadQueryStrategy()
-                ? new 
ReadwriteSplittingDataSourceRuleConfiguration(segment.getName(), 
segment.getWriteDataSource(), new LinkedList<>(segment.getReadDataSources()), 
loadBalancerName)
-                : new 
ReadwriteSplittingDataSourceRuleConfiguration(segment.getName(), 
segment.getWriteDataSource(), new LinkedList<>(segment.getReadDataSources()),
+                ? new 
ReadwriteSplittingDataSourceGroupRuleConfiguration(segment.getName(), 
segment.getWriteDataSource(), new LinkedList<>(segment.getReadDataSources()), 
loadBalancerName)
+                : new 
ReadwriteSplittingDataSourceGroupRuleConfiguration(segment.getName(), 
segment.getWriteDataSource(), new LinkedList<>(segment.getReadDataSources()),
                         
TransactionalReadQueryStrategy.valueOf(segment.getTransactionalReadQueryStrategy().toUpperCase()),
 loadBalancerName);
     }
     
diff --git 
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/provider/ReadwriteSplittingRuleConfigurationToDistSQLConverter.java
 
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/provider/ReadwriteSplittingRuleConfigurationToDistSQLConverter.java
index 00f75fea061..01b99576cef 100644
--- 
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/provider/ReadwriteSplittingRuleConfigurationToDistSQLConverter.java
+++ 
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/provider/ReadwriteSplittingRuleConfigurationToDistSQLConverter.java
@@ -23,7 +23,7 @@ import 
org.apache.shardingsphere.distsql.handler.engine.query.ral.convert.Algori
 import 
org.apache.shardingsphere.distsql.handler.engine.query.ral.convert.RuleConfigurationToDistSQLConverter;
 import 
org.apache.shardingsphere.infra.algorithm.core.config.AlgorithmConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.distsql.handler.constant.ReadwriteSplittingDistSQLConstants;
 
 import java.util.Collection;
@@ -37,11 +37,11 @@ public final class 
ReadwriteSplittingRuleConfigurationToDistSQLConverter impleme
     
     @Override
     public String convert(final ReadwriteSplittingRuleConfiguration 
ruleConfig) {
-        if (ruleConfig.getDataSources().isEmpty()) {
+        if (ruleConfig.getDataSourceGroups().isEmpty()) {
             return "";
         }
         StringBuilder result = new 
StringBuilder(ReadwriteSplittingDistSQLConstants.CREATE_READWRITE_SPLITTING_RULE);
-        Iterator<ReadwriteSplittingDataSourceRuleConfiguration> iterator = 
ruleConfig.getDataSources().iterator();
+        Iterator<ReadwriteSplittingDataSourceGroupRuleConfiguration> iterator 
= ruleConfig.getDataSourceGroups().iterator();
         while (iterator.hasNext()) {
             appendStaticReadWriteSplittingRule(ruleConfig.getLoadBalancers(), 
iterator.next(), result);
             if (iterator.hasNext()) {
@@ -53,12 +53,12 @@ public final class 
ReadwriteSplittingRuleConfigurationToDistSQLConverter impleme
     }
     
     private void appendStaticReadWriteSplittingRule(final Map<String, 
AlgorithmConfiguration> loadBalancers,
-                                                    final 
ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig, final 
StringBuilder stringBuilder) {
-        String readDataSourceNames = 
getReadDataSourceNames(dataSourceRuleConfig.getReadDataSourceNames());
-        String transactionalReadQueryStrategy = 
dataSourceRuleConfig.getTransactionalReadQueryStrategy().name();
-        String loadBalancerType = 
getLoadBalancerType(loadBalancers.get(dataSourceRuleConfig.getLoadBalancerName()));
+                                                    final 
ReadwriteSplittingDataSourceGroupRuleConfiguration dataSourceGroupRuleConfig, 
final StringBuilder stringBuilder) {
+        String readDataSourceNames = 
getReadDataSourceNames(dataSourceGroupRuleConfig.getReadDataSourceNames());
+        String transactionalReadQueryStrategy = 
dataSourceGroupRuleConfig.getTransactionalReadQueryStrategy().name();
+        String loadBalancerType = 
getLoadBalancerType(loadBalancers.get(dataSourceGroupRuleConfig.getLoadBalancerName()));
         
stringBuilder.append(String.format(ReadwriteSplittingDistSQLConstants.READWRITE_SPLITTING_FOR_STATIC,
-                dataSourceRuleConfig.getName(), 
dataSourceRuleConfig.getWriteDataSourceName(), readDataSourceNames, 
transactionalReadQueryStrategy, loadBalancerType));
+                dataSourceGroupRuleConfig.getName(), 
dataSourceGroupRuleConfig.getWriteDataSourceName(), readDataSourceNames, 
transactionalReadQueryStrategy, loadBalancerType));
     }
     
     private String getReadDataSourceNames(final Collection<String> 
readDataSourceNames) {
diff --git 
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/InUsedReadwriteSplittingStorageUnitRetriever.java
 
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/InUsedReadwriteSplittingStorageUnitRetriever.java
index 17b397c9e2e..80cb6cfa0ba 100644
--- 
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/InUsedReadwriteSplittingStorageUnitRetriever.java
+++ 
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/InUsedReadwriteSplittingStorageUnitRetriever.java
@@ -20,7 +20,7 @@ package 
org.apache.shardingsphere.readwritesplitting.distsql.handler.query;
 import com.cedarsoftware.util.CaseInsensitiveSet;
 import 
org.apache.shardingsphere.distsql.handler.executor.rql.resource.InUsedStorageUnitRetriever;
 import 
org.apache.shardingsphere.distsql.statement.rql.rule.database.ShowRulesUsedStorageUnitStatement;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingRule;
 
 import java.util.Collection;
@@ -38,7 +38,7 @@ public final class 
InUsedReadwriteSplittingStorageUnitRetriever implements InUse
             return Collections.emptyList();
         }
         Collection<String> result = new LinkedList<>();
-        for (ReadwriteSplittingDataSourceRuleConfiguration each : 
rule.getConfiguration().getDataSources()) {
+        for (ReadwriteSplittingDataSourceGroupRuleConfiguration each : 
rule.getConfiguration().getDataSourceGroups()) {
             if 
(each.getWriteDataSourceName().equalsIgnoreCase(sqlStatement.getStorageUnitName().get()))
 {
                 result.add(each.getName());
             }
diff --git 
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/ShowReadwriteSplittingRuleExecutor.java
 
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/ShowReadwriteSplittingRuleExecutor.java
index 92c9bf43780..b92a0ea61f4 100644
--- 
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/ShowReadwriteSplittingRuleExecutor.java
+++ 
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/ShowReadwriteSplittingRuleExecutor.java
@@ -28,7 +28,7 @@ import 
org.apache.shardingsphere.infra.rule.attribute.exportable.constant.Export
 import 
org.apache.shardingsphere.infra.rule.attribute.exportable.constant.ExportableItemConstants;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.distsql.statement.ShowReadwriteSplittingRulesStatement;
 import 
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingRule;
 
@@ -57,7 +57,7 @@ public final class ShowReadwriteSplittingRuleExecutor 
implements DistSQLQueryExe
         Collection<LocalDataQueryResultRow> result = new LinkedList<>();
         Map<String, Map<String, String>> exportableDataSourceMap = 
getExportableDataSourceMap(rule);
         ReadwriteSplittingRuleConfiguration ruleConfig = 
rule.getConfiguration();
-        ruleConfig.getDataSources().forEach(each -> {
+        ruleConfig.getDataSourceGroups().forEach(each -> {
             LocalDataQueryResultRow dataItem = 
buildDataItem(exportableDataSourceMap, each, getLoadBalancers(ruleConfig));
             if (null == sqlStatement.getRuleName() || 
sqlStatement.getRuleName().equalsIgnoreCase(each.getName())) {
                 result.add(dataItem);
@@ -72,14 +72,14 @@ public final class ShowReadwriteSplittingRuleExecutor 
implements DistSQLQueryExe
     }
     
     private LocalDataQueryResultRow buildDataItem(final Map<String, 
Map<String, String>> exportableDataSourceMap,
-                                                  final 
ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig, final 
Map<String, AlgorithmConfiguration> loadBalancers) {
-        String name = dataSourceRuleConfig.getName();
+                                                  final 
ReadwriteSplittingDataSourceGroupRuleConfiguration dataSourceGroupRuleConfig, 
final Map<String, AlgorithmConfiguration> loadBalancers) {
+        String name = dataSourceGroupRuleConfig.getName();
         Map<String, String> exportDataSources = 
exportableDataSourceMap.get(name);
-        Optional<AlgorithmConfiguration> loadBalancer = 
Optional.ofNullable(loadBalancers.get(dataSourceRuleConfig.getLoadBalancerName()));
+        Optional<AlgorithmConfiguration> loadBalancer = 
Optional.ofNullable(loadBalancers.get(dataSourceGroupRuleConfig.getLoadBalancerName()));
         return new LocalDataQueryResultRow(name,
-                getWriteDataSourceName(dataSourceRuleConfig, 
exportDataSources),
-                getReadDataSourceNames(dataSourceRuleConfig, 
exportDataSources),
-                
dataSourceRuleConfig.getTransactionalReadQueryStrategy().name(),
+                getWriteDataSourceName(dataSourceGroupRuleConfig, 
exportDataSources),
+                getReadDataSourceNames(dataSourceGroupRuleConfig, 
exportDataSources),
+                
dataSourceGroupRuleConfig.getTransactionalReadQueryStrategy().name(),
                 loadBalancer.map(AlgorithmConfiguration::getType).orElse(null),
                 
loadBalancer.map(AlgorithmConfiguration::getProps).orElse(null));
     }
@@ -89,12 +89,12 @@ public final class ShowReadwriteSplittingRuleExecutor 
implements DistSQLQueryExe
         return null == loadBalancers ? Collections.emptyMap() : loadBalancers;
     }
     
-    private String getWriteDataSourceName(final 
ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig, final 
Map<String, String> exportDataSources) {
-        return null == exportDataSources ? 
dataSourceRuleConfig.getWriteDataSourceName() : 
exportDataSources.get(ExportableItemConstants.PRIMARY_DATA_SOURCE_NAME);
+    private String getWriteDataSourceName(final 
ReadwriteSplittingDataSourceGroupRuleConfiguration dataSourceGroupRuleConfig, 
final Map<String, String> exportDataSources) {
+        return null == exportDataSources ? 
dataSourceGroupRuleConfig.getWriteDataSourceName() : 
exportDataSources.get(ExportableItemConstants.PRIMARY_DATA_SOURCE_NAME);
     }
     
-    private String getReadDataSourceNames(final 
ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig, final 
Map<String, String> exportDataSources) {
-        return null == exportDataSources ? 
Joiner.on(",").join(dataSourceRuleConfig.getReadDataSourceNames()) : 
exportDataSources.get(ExportableItemConstants.REPLICA_DATA_SOURCE_NAMES);
+    private String getReadDataSourceNames(final 
ReadwriteSplittingDataSourceGroupRuleConfiguration dataSourceGroupRuleConfig, 
final Map<String, String> exportDataSources) {
+        return null == exportDataSources ? 
Joiner.on(",").join(dataSourceGroupRuleConfig.getReadDataSourceNames()) : 
exportDataSources.get(ExportableItemConstants.REPLICA_DATA_SOURCE_NAMES);
     }
     
     @Override
diff --git 
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingRuleExecutor.java
 
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingRuleExecutor.java
index 8a2bcafd320..4374a1b1e37 100644
--- 
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingRuleExecutor.java
+++ 
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingRuleExecutor.java
@@ -23,7 +23,7 @@ import 
org.apache.shardingsphere.distsql.handler.required.DistSQLExecutorCurrent
 import 
org.apache.shardingsphere.infra.algorithm.core.config.AlgorithmConfiguration;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.distsql.handler.checker.ReadwriteSplittingRuleStatementChecker;
 import 
org.apache.shardingsphere.readwritesplitting.distsql.handler.converter.ReadwriteSplittingRuleStatementConverter;
 import 
org.apache.shardingsphere.readwritesplitting.distsql.statement.AlterReadwriteSplittingRuleStatement;
@@ -59,16 +59,16 @@ public final class AlterReadwriteSplittingRuleExecutor 
implements DatabaseRuleAl
     
     @Override
     public ReadwriteSplittingRuleConfiguration 
buildToBeDroppedRuleConfiguration(final ReadwriteSplittingRuleConfiguration 
toBeAlteredRuleConfig) {
-        Collection<ReadwriteSplittingDataSourceRuleConfiguration> dataSources 
= new LinkedList<>();
+        Collection<ReadwriteSplittingDataSourceGroupRuleConfiguration> 
dataSourceGroups = new LinkedList<>();
         Map<String, AlgorithmConfiguration> loadBalancers = new HashMap<>();
-        List<String> toBeAlteredDataSourceNames = 
toBeAlteredRuleConfig.getDataSources().stream().map(ReadwriteSplittingDataSourceRuleConfiguration::getName).collect(Collectors.toList());
-        for (ReadwriteSplittingDataSourceRuleConfiguration each : 
rule.getConfiguration().getDataSources()) {
+        List<String> toBeAlteredDataSourceNames = 
toBeAlteredRuleConfig.getDataSourceGroups().stream().map(ReadwriteSplittingDataSourceGroupRuleConfiguration::getName).collect(Collectors.toList());
+        for (ReadwriteSplittingDataSourceGroupRuleConfiguration each : 
rule.getConfiguration().getDataSourceGroups()) {
             if (toBeAlteredDataSourceNames.contains(each.getName())) {
-                dataSources.add(each);
+                dataSourceGroups.add(each);
                 loadBalancers.put(each.getLoadBalancerName(), 
rule.getConfiguration().getLoadBalancers().get(each.getLoadBalancerName()));
             }
         }
-        return new ReadwriteSplittingRuleConfiguration(dataSources, 
loadBalancers);
+        return new ReadwriteSplittingRuleConfiguration(dataSourceGroups, 
loadBalancers);
     }
     
     @Override
diff --git 
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/CreateReadwriteSplittingRuleExecutor.java
 
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/CreateReadwriteSplittingRuleExecutor.java
index dd2263054d9..9157a742e38 100644
--- 
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/CreateReadwriteSplittingRuleExecutor.java
+++ 
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/CreateReadwriteSplittingRuleExecutor.java
@@ -21,7 +21,7 @@ import lombok.Setter;
 import 
org.apache.shardingsphere.distsql.handler.engine.update.rdl.rule.spi.database.DatabaseRuleCreateExecutor;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.distsql.handler.checker.ReadwriteSplittingRuleStatementChecker;
 import 
org.apache.shardingsphere.readwritesplitting.distsql.handler.converter.ReadwriteSplittingRuleStatementConverter;
 import 
org.apache.shardingsphere.readwritesplitting.distsql.segment.ReadwriteSplittingRuleSegment;
@@ -60,7 +60,7 @@ public final class CreateReadwriteSplittingRuleExecutor 
implements DatabaseRuleC
     private Collection<String> getDuplicatedRuleNames(final 
Collection<ReadwriteSplittingRuleSegment> segments) {
         Collection<String> currentRuleNames = new LinkedList<>();
         if (null != rule) {
-            
currentRuleNames.addAll(rule.getConfiguration().getDataSources().stream().map(ReadwriteSplittingDataSourceRuleConfiguration::getName).collect(Collectors.toList()));
+            
currentRuleNames.addAll(rule.getConfiguration().getDataSourceGroups().stream().map(ReadwriteSplittingDataSourceGroupRuleConfiguration::getName).collect(Collectors.toList()));
         }
         return 
segments.stream().map(ReadwriteSplittingRuleSegment::getName).filter(currentRuleNames::contains).collect(Collectors.toList());
     }
diff --git 
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleExecutor.java
 
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleExecutor.java
index 27707758a80..c8f87c767c1 100644
--- 
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleExecutor.java
+++ 
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleExecutor.java
@@ -30,7 +30,7 @@ import 
org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 import 
org.apache.shardingsphere.infra.rule.attribute.datanode.DataNodeRuleAttribute;
 import 
org.apache.shardingsphere.infra.rule.attribute.datasource.DataSourceMapperRuleAttribute;
 import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.distsql.statement.DropReadwriteSplittingRuleStatement;
 import 
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingRule;
 import org.apache.shardingsphere.single.rule.SingleRule;
@@ -64,7 +64,7 @@ public final class DropReadwriteSplittingRuleExecutor 
implements DatabaseRuleDro
     }
     
     private void checkToBeDroppedRuleNames(final 
DropReadwriteSplittingRuleStatement sqlStatement) {
-        Collection<String> currentRuleNames = 
rule.getConfiguration().getDataSources().stream().map(ReadwriteSplittingDataSourceRuleConfiguration::getName).collect(Collectors.toList());
+        Collection<String> currentRuleNames = 
rule.getConfiguration().getDataSourceGroups().stream().map(ReadwriteSplittingDataSourceGroupRuleConfiguration::getName).collect(Collectors.toList());
         Collection<String> notExistedRuleNames = 
sqlStatement.getNames().stream().filter(each -> 
!currentRuleNames.contains(each)).collect(Collectors.toList());
         ShardingSpherePreconditions.checkMustEmpty(notExistedRuleNames, () -> 
new MissingRequiredRuleException("Readwrite-splitting", database.getName(), 
sqlStatement.getNames()));
     }
@@ -105,30 +105,32 @@ public final class DropReadwriteSplittingRuleExecutor 
implements DatabaseRuleDro
     
     @Override
     public ReadwriteSplittingRuleConfiguration 
buildToBeDroppedRuleConfiguration(final DropReadwriteSplittingRuleStatement 
sqlStatement) {
-        Collection<ReadwriteSplittingDataSourceRuleConfiguration> 
toBeDroppedDataSources = new LinkedList<>();
+        Collection<ReadwriteSplittingDataSourceGroupRuleConfiguration> 
toBeDroppedDataSourceGroups = new LinkedList<>();
         Map<String, AlgorithmConfiguration> toBeDroppedLoadBalancers = new 
HashMap<>();
         for (String each : sqlStatement.getNames()) {
-            toBeDroppedDataSources.add(new 
ReadwriteSplittingDataSourceRuleConfiguration(each, null, null, null));
+            toBeDroppedDataSourceGroups.add(new 
ReadwriteSplittingDataSourceGroupRuleConfiguration(each, null, null, null));
             dropRule(each);
         }
         findUnusedLoadBalancers().forEach(each -> 
toBeDroppedLoadBalancers.put(each, 
rule.getConfiguration().getLoadBalancers().get(each)));
-        return new ReadwriteSplittingRuleConfiguration(toBeDroppedDataSources, 
toBeDroppedLoadBalancers);
+        return new 
ReadwriteSplittingRuleConfiguration(toBeDroppedDataSourceGroups, 
toBeDroppedLoadBalancers);
     }
     
     private void dropRule(final String ruleName) {
-        Optional<ReadwriteSplittingDataSourceRuleConfiguration> 
dataSourceRuleConfig = 
rule.getConfiguration().getDataSources().stream().filter(each -> 
ruleName.equals(each.getName())).findAny();
-        dataSourceRuleConfig.ifPresent(optional -> 
rule.getConfiguration().getDataSources().remove(optional));
+        Optional<ReadwriteSplittingDataSourceGroupRuleConfiguration> 
dataSourceRuleGroupConfig = 
rule.getConfiguration().getDataSourceGroups().stream()
+                .filter(each -> ruleName.equals(each.getName())).findAny();
+        dataSourceRuleGroupConfig.ifPresent(optional -> 
rule.getConfiguration().getDataSourceGroups().remove(optional));
     }
     
     private Collection<String> findUnusedLoadBalancers() {
-        Collection<String> inUsedAlgorithms = 
rule.getConfiguration().getDataSources().stream().map(ReadwriteSplittingDataSourceRuleConfiguration::getLoadBalancerName).collect(Collectors.toSet());
+        Collection<String> inUsedAlgorithms = 
rule.getConfiguration().getDataSourceGroups().stream()
+                
.map(ReadwriteSplittingDataSourceGroupRuleConfiguration::getLoadBalancerName).collect(Collectors.toSet());
         return 
rule.getConfiguration().getLoadBalancers().keySet().stream().filter(each -> 
!inUsedAlgorithms.contains(each)).collect(Collectors.toSet());
     }
     
     @Override
     public boolean hasAnyOneToBeDropped(final 
DropReadwriteSplittingRuleStatement sqlStatement) {
         return !Collections.disjoint(
-                
rule.getConfiguration().getDataSources().stream().map(ReadwriteSplittingDataSourceRuleConfiguration::getName).collect(Collectors.toSet()),
 sqlStatement.getNames());
+                
rule.getConfiguration().getDataSourceGroups().stream().map(ReadwriteSplittingDataSourceGroupRuleConfiguration::getName).collect(Collectors.toSet()),
 sqlStatement.getNames());
     }
     
     @Override
diff --git 
a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/converter/ReadwriteSplittingRuleStatementConverterTest.java
 
b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/converter/ReadwriteSplittingRuleStatementConverterTest.java
index f3d9d50078c..2b4f6d94361 100644
--- 
a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/converter/ReadwriteSplittingRuleStatementConverterTest.java
+++ 
b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/converter/ReadwriteSplittingRuleStatementConverterTest.java
@@ -20,7 +20,7 @@ package 
org.apache.shardingsphere.readwritesplitting.distsql.handler.converter;
 import org.apache.shardingsphere.distsql.segment.AlgorithmSegment;
 import 
org.apache.shardingsphere.infra.algorithm.core.config.AlgorithmConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.distsql.segment.ReadwriteSplittingRuleSegment;
 import org.junit.jupiter.api.Test;
 
@@ -41,7 +41,7 @@ class ReadwriteSplittingRuleStatementConverterTest {
     void assertEmptyRuleSegmentConvertResult() {
         ReadwriteSplittingRuleConfiguration 
actualEmptyRuleSegmentConvertResult = ReadwriteSplittingRuleStatementConverter
                 .convert(Collections.emptyList());
-        
assertTrue(actualEmptyRuleSegmentConvertResult.getDataSources().isEmpty());
+        
assertTrue(actualEmptyRuleSegmentConvertResult.getDataSourceGroups().isEmpty());
         
assertTrue(actualEmptyRuleSegmentConvertResult.getLoadBalancers().isEmpty());
     }
     
@@ -51,11 +51,11 @@ class ReadwriteSplittingRuleStatementConverterTest {
                 "static_load_balancer_type", new Properties());
         ReadwriteSplittingRuleConfiguration 
actualSingleRuleSegmentConvertResult = ReadwriteSplittingRuleStatementConverter
                 
.convert(Collections.singleton(expectedSingleReadwriteSplittingRuleSegment));
-        Collection<ReadwriteSplittingDataSourceRuleConfiguration> 
actualSingleRuleSegmentConvertResultDataSources = 
actualSingleRuleSegmentConvertResult.getDataSources();
+        Collection<ReadwriteSplittingDataSourceGroupRuleConfiguration> 
actualSingleRuleSegmentConvertResultDataSourceGroups = 
actualSingleRuleSegmentConvertResult.getDataSourceGroups();
         Map<String, AlgorithmConfiguration> 
actualSingleRuleSegmentConvertResultLoadBalancers = 
actualSingleRuleSegmentConvertResult.getLoadBalancers();
-        assertThat(actualSingleRuleSegmentConvertResultDataSources.size(), 
is(1));
+        
assertThat(actualSingleRuleSegmentConvertResultDataSourceGroups.size(), is(1));
         assertThat(actualSingleRuleSegmentConvertResultLoadBalancers.size(), 
is(1));
-        ReadwriteSplittingDataSourceRuleConfiguration actualRuleConfig = 
actualSingleRuleSegmentConvertResultDataSources.iterator().next();
+        ReadwriteSplittingDataSourceGroupRuleConfiguration actualRuleConfig = 
actualSingleRuleSegmentConvertResultDataSourceGroups.iterator().next();
         assertThat(actualRuleConfig.getName(), 
is(expectedSingleReadwriteSplittingRuleSegment.getName()));
         String expectedLoadBalancerName = String.format("%s_%s", 
expectedSingleReadwriteSplittingRuleSegment.getName(), 
expectedSingleReadwriteSplittingRuleSegment.getLoadBalancer().getName());
         assertThat(actualRuleConfig.getLoadBalancerName(), 
is(expectedLoadBalancerName));
diff --git 
a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/provider/ReadwriteSplittingRuleConfigurationToDistSQLConverterTest.java
 
b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/provider/ReadwriteSplittingRuleConfigurationToDistSQLConverterTest.java
index 6ee0ebd05af..840c8b9d3c3 100644
--- 
a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/provider/ReadwriteSplittingRuleConfigurationToDistSQLConverterTest.java
+++ 
b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/provider/ReadwriteSplittingRuleConfigurationToDistSQLConverterTest.java
@@ -19,7 +19,7 @@ package 
org.apache.shardingsphere.readwritesplitting.distsql.handler.provider;
 
 import 
org.apache.shardingsphere.infra.algorithm.core.config.AlgorithmConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import org.apache.shardingsphere.test.util.PropertiesBuilder;
 import org.junit.jupiter.api.Test;
 
@@ -36,16 +36,16 @@ class 
ReadwriteSplittingRuleConfigurationToDistSQLConverterTest {
     @Test
     void assertConvertWithEmptyDataSources() {
         ReadwriteSplittingRuleConfiguration readwriteSplittingRuleConfig = 
mock(ReadwriteSplittingRuleConfiguration.class);
-        
when(readwriteSplittingRuleConfig.getDataSources()).thenReturn(Collections.emptyList());
+        
when(readwriteSplittingRuleConfig.getDataSourceGroups()).thenReturn(Collections.emptyList());
         ReadwriteSplittingRuleConfigurationToDistSQLConverter 
readwriteSplittingRuleConfigurationToDistSQLConverter = new 
ReadwriteSplittingRuleConfigurationToDistSQLConverter();
         
assertThat(readwriteSplittingRuleConfigurationToDistSQLConverter.convert(readwriteSplittingRuleConfig),
 is(""));
     }
     
     @Test
     void assertConvert() {
-        ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig =
-                new 
ReadwriteSplittingDataSourceRuleConfiguration("readwrite_ds", "ds_primary", 
Arrays.asList("ds_slave_0", "ds_slave_1"), "test");
-        ReadwriteSplittingRuleConfiguration readwriteSplittingRuleConfig = new 
ReadwriteSplittingRuleConfiguration(Collections.singleton(dataSourceRuleConfig),
+        ReadwriteSplittingDataSourceGroupRuleConfiguration 
dataSourceGroupConfig =
+                new 
ReadwriteSplittingDataSourceGroupRuleConfiguration("readwrite_ds", 
"ds_primary", Arrays.asList("ds_slave_0", "ds_slave_1"), "test");
+        ReadwriteSplittingRuleConfiguration readwriteSplittingRuleConfig = new 
ReadwriteSplittingRuleConfiguration(Collections.singleton(dataSourceGroupConfig),
                 Collections.singletonMap("test", new 
AlgorithmConfiguration("random", PropertiesBuilder.build(new 
PropertiesBuilder.Property("read_weight", "2:1")))));
         ReadwriteSplittingRuleConfigurationToDistSQLConverter 
readwriteSplittingRuleConfigurationToDistSQLConverter = new 
ReadwriteSplittingRuleConfigurationToDistSQLConverter();
         
assertThat(readwriteSplittingRuleConfigurationToDistSQLConverter.convert(readwriteSplittingRuleConfig),
diff --git 
a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/ShowReadwriteSplittingRuleExecutorTest.java
 
b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/ShowReadwriteSplittingRuleExecutorTest.java
index 0b2c2a88d94..8e15bd9fc7c 100644
--- 
a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/ShowReadwriteSplittingRuleExecutorTest.java
+++ 
b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/ShowReadwriteSplittingRuleExecutorTest.java
@@ -26,7 +26,7 @@ import 
org.apache.shardingsphere.infra.rule.attribute.RuleAttributes;
 import 
org.apache.shardingsphere.infra.rule.attribute.exportable.constant.ExportableConstants;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.distsql.statement.ShowReadwriteSplittingRulesStatement;
 import 
org.apache.shardingsphere.readwritesplitting.rule.attribute.ReadwriteSplittingExportableRuleAttribute;
 import 
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingRule;
@@ -110,10 +110,10 @@ class ShowReadwriteSplittingRuleExecutorTest {
     }
     
     private ReadwriteSplittingRuleConfiguration createRuleConfiguration() {
-        ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig =
-                new 
ReadwriteSplittingDataSourceRuleConfiguration("readwrite_ds", "ds_primary", 
Arrays.asList("ds_slave_0", "ds_slave_1"), "test");
+        ReadwriteSplittingDataSourceGroupRuleConfiguration 
dataSourceGroupConfig =
+                new 
ReadwriteSplittingDataSourceGroupRuleConfiguration("readwrite_ds", 
"ds_primary", Arrays.asList("ds_slave_0", "ds_slave_1"), "test");
         return new ReadwriteSplittingRuleConfiguration(
-                Collections.singleton(dataSourceRuleConfig), 
Collections.singletonMap("test", new AlgorithmConfiguration("random", 
PropertiesBuilder.build(new Property("read_weight", "2:1")))));
+                Collections.singleton(dataSourceGroupConfig), 
Collections.singletonMap("test", new AlgorithmConfiguration("random", 
PropertiesBuilder.build(new Property("read_weight", "2:1")))));
     }
     
     @Test
@@ -133,8 +133,8 @@ class ShowReadwriteSplittingRuleExecutorTest {
     }
     
     private ReadwriteSplittingRuleConfiguration 
createRuleConfigurationWithoutLoadBalancer() {
-        ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig =
-                new 
ReadwriteSplittingDataSourceRuleConfiguration("readwrite_ds", "write_ds", 
Arrays.asList("read_ds_0", "read_ds_1"), null);
-        return new 
ReadwriteSplittingRuleConfiguration(Collections.singleton(dataSourceRuleConfig),
 null);
+        ReadwriteSplittingDataSourceGroupRuleConfiguration 
dataSourceGroupConfig =
+                new 
ReadwriteSplittingDataSourceGroupRuleConfiguration("readwrite_ds", "write_ds", 
Arrays.asList("read_ds_0", "read_ds_1"), null);
+        return new 
ReadwriteSplittingRuleConfiguration(Collections.singleton(dataSourceGroupConfig),
 null);
     }
 }
diff --git 
a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingRuleExecutorTest.java
 
b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingRuleExecutorTest.java
index 75050a1ccb2..70a85de3960 100644
--- 
a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingRuleExecutorTest.java
+++ 
b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingRuleExecutorTest.java
@@ -24,7 +24,7 @@ import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
 import 
org.apache.shardingsphere.infra.spi.exception.ServiceProviderNotFoundException;
 import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.distsql.segment.ReadwriteSplittingRuleSegment;
 import 
org.apache.shardingsphere.readwritesplitting.distsql.statement.AlterReadwriteSplittingRuleStatement;
 import 
org.apache.shardingsphere.readwritesplitting.exception.actual.DuplicateReadwriteSplittingActualDataSourceException;
@@ -165,16 +165,16 @@ class AlterReadwriteSplittingRuleExecutorTest {
     }
     
     private ReadwriteSplittingRuleConfiguration 
createCurrentRuleConfiguration() {
-        ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig =
-                new 
ReadwriteSplittingDataSourceRuleConfiguration("readwrite_ds", "ds_write", 
Arrays.asList("read_ds_0", "read_ds_1"), "TEST");
-        return new ReadwriteSplittingRuleConfiguration(new 
LinkedList<>(Collections.singleton(dataSourceRuleConfig)), 
Collections.emptyMap());
+        ReadwriteSplittingDataSourceGroupRuleConfiguration 
dataSourceGroupConfig =
+                new 
ReadwriteSplittingDataSourceGroupRuleConfiguration("readwrite_ds", "ds_write", 
Arrays.asList("read_ds_0", "read_ds_1"), "TEST");
+        return new ReadwriteSplittingRuleConfiguration(new 
LinkedList<>(Collections.singleton(dataSourceGroupConfig)), 
Collections.emptyMap());
     }
     
     private ReadwriteSplittingRuleConfiguration 
createCurrentRuleConfigurationWithMultipleRules() {
-        ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig0 =
-                new 
ReadwriteSplittingDataSourceRuleConfiguration("readwrite_ds_0", "ds_write_0", 
Arrays.asList("read_ds_0_0", "read_ds_0_1"), "TEST");
-        ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig1 =
-                new 
ReadwriteSplittingDataSourceRuleConfiguration("readwrite_ds_1", "ds_write_1", 
Arrays.asList("read_ds_1_0", "read_ds_1_1"), "TEST");
-        return new ReadwriteSplittingRuleConfiguration(new 
LinkedList<>(Arrays.asList(dataSourceRuleConfig0, dataSourceRuleConfig1)), 
Collections.emptyMap());
+        ReadwriteSplittingDataSourceGroupRuleConfiguration 
dataSourceGroupConfig0 =
+                new 
ReadwriteSplittingDataSourceGroupRuleConfiguration("readwrite_ds_0", 
"ds_write_0", Arrays.asList("read_ds_0_0", "read_ds_0_1"), "TEST");
+        ReadwriteSplittingDataSourceGroupRuleConfiguration 
dataSourceGroupConfig1 =
+                new 
ReadwriteSplittingDataSourceGroupRuleConfiguration("readwrite_ds_1", 
"ds_write_1", Arrays.asList("read_ds_1_0", "read_ds_1_1"), "TEST");
+        return new ReadwriteSplittingRuleConfiguration(new 
LinkedList<>(Arrays.asList(dataSourceGroupConfig0, dataSourceGroupConfig1)), 
Collections.emptyMap());
     }
 }
diff --git 
a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/CreateReadwriteSplittingRuleExecutorTest.java
 
b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/CreateReadwriteSplittingRuleExecutorTest.java
index fad29f3bc2a..c7a75d97ddb 100644
--- 
a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/CreateReadwriteSplittingRuleExecutorTest.java
+++ 
b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/CreateReadwriteSplittingRuleExecutorTest.java
@@ -26,7 +26,7 @@ import 
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaDa
 import 
org.apache.shardingsphere.infra.rule.attribute.datasource.DataSourceMapperRuleAttribute;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.distsql.segment.ReadwriteSplittingRuleSegment;
 import 
org.apache.shardingsphere.readwritesplitting.distsql.statement.CreateReadwriteSplittingRuleStatement;
 import 
org.apache.shardingsphere.readwritesplitting.exception.actual.DuplicateReadwriteSplittingActualDataSourceException;
@@ -158,7 +158,7 @@ class CreateReadwriteSplittingRuleExecutorTest {
         executor.checkBeforeUpdate(sqlStatement);
         executor.setRule(mock(ReadwriteSplittingRule.class));
         ReadwriteSplittingRuleConfiguration toBeCreatedRuleConfig = 
executor.buildToBeCreatedRuleConfiguration(sqlStatement);
-        assertThat(toBeCreatedRuleConfig.getDataSources().size(), is(1));
+        assertThat(toBeCreatedRuleConfig.getDataSourceGroups().size(), is(1));
         assertThat(toBeCreatedRuleConfig.getLoadBalancers().size(), is(1));
     }
     
@@ -197,8 +197,8 @@ class CreateReadwriteSplittingRuleExecutorTest {
     }
     
     private ReadwriteSplittingRuleConfiguration 
createCurrentRuleConfiguration() {
-        ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig = 
new ReadwriteSplittingDataSourceRuleConfiguration("readwrite_ds_0", "ds_write",
+        ReadwriteSplittingDataSourceGroupRuleConfiguration 
dataSourceGroupConfig = new 
ReadwriteSplittingDataSourceGroupRuleConfiguration("readwrite_ds_0", "ds_write",
                 Arrays.asList("read_ds_0", "read_ds_1"), "TEST");
-        return new ReadwriteSplittingRuleConfiguration(new 
LinkedList<>(Collections.singleton(dataSourceRuleConfig)), 
Collections.emptyMap());
+        return new ReadwriteSplittingRuleConfiguration(new 
LinkedList<>(Collections.singleton(dataSourceGroupConfig)), 
Collections.emptyMap());
     }
 }
diff --git 
a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleExecutorTest.java
 
b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleExecutorTest.java
index 3952df05d47..d5322cadbe3 100644
--- 
a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleExecutorTest.java
+++ 
b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/DropReadwriteSplittingRuleExecutorTest.java
@@ -27,7 +27,7 @@ import 
org.apache.shardingsphere.infra.rule.attribute.RuleAttributes;
 import 
org.apache.shardingsphere.infra.rule.attribute.datanode.DataNodeRuleAttribute;
 import 
org.apache.shardingsphere.infra.rule.attribute.datasource.DataSourceMapperRuleAttribute;
 import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.distsql.statement.DropReadwriteSplittingRuleStatement;
 import 
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingRule;
 import org.junit.jupiter.api.BeforeEach;
@@ -98,7 +98,7 @@ class DropReadwriteSplittingRuleExecutorTest {
         when(rule.getConfiguration()).thenReturn(ruleConfig);
         executor.setRule(rule);
         ReadwriteSplittingRuleConfiguration actual = 
executor.buildToBeDroppedRuleConfiguration(createSQLStatement());
-        assertThat(actual.getDataSources().size(), is(1));
+        assertThat(actual.getDataSourceGroups().size(), is(1));
         assertThat(actual.getLoadBalancers().size(), is(1));
     }
     
@@ -109,7 +109,7 @@ class DropReadwriteSplittingRuleExecutorTest {
         when(rule.getConfiguration()).thenReturn(ruleConfig);
         executor.setRule(rule);
         ReadwriteSplittingRuleConfiguration actual = 
executor.buildToBeDroppedRuleConfiguration(createSQLStatement());
-        assertThat(actual.getDataSources().size(), is(1));
+        assertThat(actual.getDataSourceGroups().size(), is(1));
         assertThat(actual.getLoadBalancers().size(), is(0));
     }
     
@@ -120,7 +120,7 @@ class DropReadwriteSplittingRuleExecutorTest {
         when(rule.getConfiguration()).thenReturn(ruleConfig);
         executor.setRule(rule);
         ReadwriteSplittingRuleConfiguration actual = 
executor.buildToBeDroppedRuleConfiguration(createSQLStatement());
-        assertThat(actual.getDataSources().size(), is(1));
+        assertThat(actual.getDataSourceGroups().size(), is(1));
         assertThat(actual.getLoadBalancers().size(), is(1));
     }
     
@@ -129,28 +129,28 @@ class DropReadwriteSplittingRuleExecutorTest {
     }
     
     private ReadwriteSplittingRuleConfiguration 
createCurrentRuleConfiguration() {
-        ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig = 
new ReadwriteSplittingDataSourceRuleConfiguration("readwrite_ds",
+        ReadwriteSplittingDataSourceGroupRuleConfiguration 
dataSourceGroupConfig = new 
ReadwriteSplittingDataSourceGroupRuleConfiguration("readwrite_ds",
                 "", Collections.emptyList(), "readwrite_ds");
         Map<String, AlgorithmConfiguration> loadBalancers = new 
LinkedHashMap<>();
         loadBalancers.put("readwrite_ds", new AlgorithmConfiguration("TEST", 
new Properties()));
-        return new ReadwriteSplittingRuleConfiguration(new 
LinkedList<>(Collections.singleton(dataSourceRuleConfig)), loadBalancers);
+        return new ReadwriteSplittingRuleConfiguration(new 
LinkedList<>(Collections.singleton(dataSourceGroupConfig)), loadBalancers);
     }
     
     private ReadwriteSplittingRuleConfiguration 
createCurrentRuleConfigurationWithoutLoadBalancerName() {
-        ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig = 
new ReadwriteSplittingDataSourceRuleConfiguration("readwrite_ds",
+        ReadwriteSplittingDataSourceGroupRuleConfiguration 
dataSourceGroupConfig = new 
ReadwriteSplittingDataSourceGroupRuleConfiguration("readwrite_ds",
                 "", new LinkedList<>(), null);
         Map<String, AlgorithmConfiguration> loadBalancers = new 
LinkedHashMap<>();
         loadBalancers.put("readwrite_ds", new AlgorithmConfiguration("TEST", 
new Properties()));
-        return new ReadwriteSplittingRuleConfiguration(new 
LinkedList<>(Collections.singleton(dataSourceRuleConfig)), loadBalancers);
+        return new ReadwriteSplittingRuleConfiguration(new 
LinkedList<>(Collections.singleton(dataSourceGroupConfig)), loadBalancers);
     }
     
     private ReadwriteSplittingRuleConfiguration 
createMultipleCurrentRuleConfigurations() {
-        ReadwriteSplittingDataSourceRuleConfiguration fooDataSourceRuleConfig 
= new ReadwriteSplittingDataSourceRuleConfiguration("foo_ds",
-                "", new LinkedList<>(), "TEST");
-        ReadwriteSplittingDataSourceRuleConfiguration barDataSourceRuleConfig 
= new ReadwriteSplittingDataSourceRuleConfiguration("bar_ds",
-                "", new LinkedList<>(), "TEST");
+        ReadwriteSplittingDataSourceGroupRuleConfiguration 
fooDataSourceGroupConfig = new 
ReadwriteSplittingDataSourceGroupRuleConfiguration(
+                "foo_ds", "", new LinkedList<>(), "TEST");
+        ReadwriteSplittingDataSourceGroupRuleConfiguration 
barDataSourceGroupConfig = new 
ReadwriteSplittingDataSourceGroupRuleConfiguration(
+                "bar_ds", "", new LinkedList<>(), "TEST");
         Map<String, AlgorithmConfiguration> loadBalancers = new 
LinkedHashMap<>();
         loadBalancers.put("TEST", new AlgorithmConfiguration("TEST", new 
Properties()));
-        return new ReadwriteSplittingRuleConfiguration(new 
LinkedList<>(Arrays.asList(fooDataSourceRuleConfig, barDataSourceRuleConfig)), 
loadBalancers);
+        return new ReadwriteSplittingRuleConfiguration(new 
LinkedList<>(Arrays.asList(fooDataSourceGroupConfig, 
barDataSourceGroupConfig)), loadBalancers);
     }
 }
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/config/yaml/swapper/YamlProxyConfigurationSwapperTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/config/yaml/swapper/YamlProxyConfigurationSwapperTest.java
index a61489f2af6..d5ea5d631a8 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/config/yaml/swapper/YamlProxyConfigurationSwapperTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/config/yaml/swapper/YamlProxyConfigurationSwapperTest.java
@@ -27,7 +27,7 @@ import 
org.apache.shardingsphere.proxy.backend.config.ProxyConfiguration;
 import org.apache.shardingsphere.proxy.backend.config.ProxyConfigurationLoader;
 import org.apache.shardingsphere.proxy.backend.config.YamlProxyConfiguration;
 import 
org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
-import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import 
org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
 import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
@@ -77,11 +77,11 @@ class YamlProxyConfigurationSwapperTest {
     }
     
     private void assertReadwriteSplittingRuleConfiguration(final 
ReadwriteSplittingRuleConfiguration actual) {
-        assertThat(actual.getDataSources().size(), is(1));
-        ReadwriteSplittingDataSourceRuleConfiguration dataSource = 
actual.getDataSources().iterator().next();
-        assertThat(dataSource.getName(), is("readwrite_ds"));
-        assertThat(dataSource.getWriteDataSourceName(), is("foo_db"));
-        assertThat(dataSource.getReadDataSourceNames(), 
is(Collections.singletonList("foo_db")));
+        assertThat(actual.getDataSourceGroups().size(), is(1));
+        ReadwriteSplittingDataSourceGroupRuleConfiguration 
dataSourceGroupConfig = actual.getDataSourceGroups().iterator().next();
+        assertThat(dataSourceGroupConfig.getName(), is("readwrite_ds"));
+        assertThat(dataSourceGroupConfig.getWriteDataSourceName(), 
is("foo_db"));
+        assertThat(dataSourceGroupConfig.getReadDataSourceNames(), 
is(Collections.singletonList("foo_db")));
         assertThat(actual.getLoadBalancers().size(), is(1));
         AlgorithmConfiguration loadBalancer = 
actual.getLoadBalancers().get("round_robin");
         assertThat(loadBalancer.getProps().size(), is(1));

Reply via email to