You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2020/09/16 07:38:29 UTC

[shardingsphere] branch master updated: Rename shardingsphere-consensus-replication module (#7479)

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

zhangyonglun 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 de6a0bc  Rename shardingsphere-consensus-replication module (#7479)
de6a0bc is described below

commit de6a0bc1a0ffc1fe34bf4872b7b0b7ac217481a3
Author: Liang Zhang <te...@163.com>
AuthorDate: Wed Sep 16 15:38:18 2020 +0800

    Rename shardingsphere-consensus-replication module (#7479)
    
    * Rename shardingsphere-consensus-replication module
    
    * Rename package name
    
    * Refactor config name
    
    * Refactor common class name
    
    * Refactor executor class name
    
    * Refactor route class name
    
    * Rename tag name
    
    * Update docs
---
 README.md                                          |  2 +-
 README_ZH.md                                       |  2 +-
 docs/blog/content/material/database.cn.md          | 18 ++--
 docs/blog/content/material/database.en.md          | 16 ++--
 .../content/dev-manual/configuration.cn.md         | 28 +++----
 .../content/dev-manual/configuration.en.md         | 28 +++----
 docs/document/content/dev-manual/kernel.cn.md      | 18 ++--
 docs/document/content/dev-manual/kernel.en.md      | 18 ++--
 .../_index.cn.md                                   |  2 +-
 .../_index.en.md                                   |  2 +-
 .../governance/management/config-center.cn.md      |  2 +-
 .../governance/management/config-center.en.md      |  2 +-
 .../features/pluggable-architecture/_index.cn.md   |  2 +-
 .../features/pluggable-architecture/_index.en.md   |  2 +-
 docs/document/content/overview/_index.cn.md        |  2 +-
 docs/document/content/overview/_index.en.md        |  2 +-
 .../shardingsphere-jdbc/configuration/_index.cn.md |  2 +-
 .../shardingsphere-jdbc/configuration/_index.en.md |  2 +-
 .../java-api/consensus-replication.cn.md           | 10 +++
 .../java-api/consensus-replication.en.md           | 10 +++
 .../configuration/java-api/replica.cn.md           | 10 ---
 .../configuration/java-api/replica.en.md           | 10 ---
 .../consensus-replication.cn.md}                   |  2 +-
 .../consensus-replication.en.md}                   |  2 +-
 .../consensus-replication.cn.md}                   |  2 +-
 .../consensus-replication.en.md}                   |  2 +-
 .../consensus-replication.cn.md}                   |  2 +-
 .../consensus-replication.en.md}                   |  2 +-
 .../usage/sharding/_index.cn.md                    |  2 +-
 .../usage/sharding/_index.en.md                    |  2 +-
 .../configuration/_index.cn.md                     |  2 +-
 .../configuration/_index.en.md                     |  2 +-
 shardingsphere-features/pom.xml                    |  2 +-
 .../pom.xml                                        | 10 +--
 .../pom.xml                                        |  4 +-
 ...usReplicationActualTableRuleConfiguration.java} |  8 +-
 ...susReplicationLogicTableRuleConfiguration.java} | 10 +--
 .../ConsensusReplicationRuleConfiguration.java}    | 16 ++--
 .../pom.xml                                        |  6 +-
 .../constant/ConsensusReplicationOrder.java}       |  9 +-
 .../consensus/rule/ConsensusReplicationRule.java}  | 34 ++++----
 .../rule/ConsensusReplicationTableRule.java}       | 10 +--
 .../builder/ConsensusReplicationRuleBuilder.java}  | 22 ++---
 ...usReplicationActualTableRuleConfiguration.java} |  6 +-
 ...susReplicationLogicTableRuleConfiguration.java} |  8 +-
 ...YamlConsensusReplicationRuleConfiguration.java} | 12 +--
 ...onActualTableRuleConfigurationYamlSwapper.java} | 19 +++--
 ...tionLogicTableRuleConfigurationYamlSwapper.java | 53 ++++++++++++
 ...susReplicationRuleConfigurationYamlSwapper.java | 69 ++++++++++++++++
 ...dingsphere.infra.rule.ShardingSphereRuleBuilder |  2 +-
 ...infra.yaml.swapper.YamlRuleConfigurationSwapper |  2 +-
 .../rule/ConsensusReplicationRuleTest.java}        | 36 ++++----
 .../ConsensusReplicationRuleBuilderTest.java}      | 12 +--
 ...tualTableRuleConfigurationYamlSwapperTest.java} | 22 ++---
 ...plicationRuleConfigurationYamlSwapperTest.java} | 58 ++++++-------
 .../pom.xml                                        |  8 +-
 .../ConsensusReplicationExecutorCallback.java}     |  6 +-
 ...faultConsensusReplicationExecutorCallback.java} | 14 ++--
 ...ConsensusReplicationExecuteGroupDecorator.java} | 34 ++++----
 ....infra.executor.sql.group.ExecuteGroupDecorator |  2 +-
 ...or.sql.raw.execute.callback.RawExecutorCallback |  2 +-
 .../pom.xml                                        |  6 +-
 .../route/engine/ConsensusReplicationGroup.java}   |  8 +-
 .../engine/ConsensusReplicationRouteDecorator.java | 96 ++++++++++++++++++++++
 .../ConsensusReplicationRouteStageContext.java}    |  8 +-
 ...dingsphere.infra.route.decorator.RouteDecorator |  2 +-
 ...licaLogicTableRuleConfigurationYamlSwapper.java | 54 ------------
 .../ReplicaRuleConfigurationYamlSwapper.java       | 69 ----------------
 .../route/engine/ReplicaRouteDecorator.java        | 95 ---------------------
 .../shardingsphere-jdbc-core/pom.xml               |  4 +-
 .../shardingsphere-proxy-backend/pom.xml           |  4 +-
 71 files changed, 523 insertions(+), 529 deletions(-)

diff --git a/README.md b/README.md
index a304ba6..7b436a6 100644
--- a/README.md
+++ b/README.md
@@ -28,7 +28,7 @@ Aiming at reasonably making full use of the computation and storage capacity of
 As the cornerstone of many enterprises, relational database still takes a huge market share. Therefore, at current stage, we prefer to focus on its increment instead of a total overturn.
 
 Apache ShardingSphere begins to focus on pluggable architecture from version 5.x, features can be embedded into project flexibility.
-Currently, the features such as data sharding, read-write splitting, multi replica, data encrypt, shadow test, and SQL dialects / database protocols such as MySQL, PostgreSQL, SQLServer, Oracle supported are all weaved by plugins.
+Currently, the features such as data sharding, read-write splitting, consensus replication, data encrypt, shadow test, and SQL dialects / database protocols such as MySQL, PostgreSQL, SQLServer, Oracle supported are all weaved by plugins.
 Developers can customize their own ShardingSphere systems just like building lego blocks. There are lots of SPI extensions for Apache ShardingSphere now and increasing continuously.
 
 ShardingSphere became an [Apache](https://apache.org/index.html#projects-list) Top Level Project on April 16, 2020.
diff --git a/README_ZH.md b/README_ZH.md
index c468955..3f3de19 100644
--- a/README_ZH.md
+++ b/README_ZH.md
@@ -27,7 +27,7 @@ Apache ShardingSphere 定位为关系型数据库中间件,旨在充分合理
 它通过关注不变,进而抓住事物本质。关系型数据库当今依然占有巨大市场,是各个公司核心业务的基石,未来也难于撼动,我们目前阶段更加关注在原有基础上的增量,而非颠覆。
 
 Apache ShardingSphere 5.x 版本开始致力于可插拔架构,项目的功能组件能够灵活的以可插拔的方式进行扩展。
-目前,数据分片、读写分离、多数据副本、数据加密、影子库压测等功能,以及对 MySQL、PostgreSQL、SQLServer、Oracle 等 SQL 与协议的支持,均通过插件的方式织入项目。
+目前,数据分片、读写分离、强一致多副本、数据加密、影子库压测等功能,以及对 MySQL、PostgreSQL、SQLServer、Oracle 等 SQL 与协议的支持,均通过插件的方式织入项目。
 开发者能够像使用积木一样定制属于自己的独特系统。Apache ShardingSphere 目前已提供数十个 SPI 作为系统的扩展点,而且仍在不断增加中。
 
 ShardingSphere 已于2020年4月16日成为 [Apache 软件基金会](https://apache.org/index.html#projects-list)的顶级项目。
diff --git a/docs/blog/content/material/database.cn.md b/docs/blog/content/material/database.cn.md
index d84fa07..7ad0d9c 100644
--- a/docs/blog/content/material/database.cn.md
+++ b/docs/blog/content/material/database.cn.md
@@ -17,17 +17,17 @@ chapter = true
 全面兼容面向传统关系型数据库的 SQL 和事务,并且对分布式的天然友好,是分布式数据库解决方案的设计目标。它的核心功能主要集中在以下几点:
 
 - 分布式存储: 数据存储不受单机磁盘容量限制,可通过增加数据服务器的数量提升存储能力;
-    
+
 - 计算存储分离: 计算节点无状态,可通过水平扩展增加算力。存储节点和计算节点能够分层优化;
-    
+
 - 分布式事务: 高性能、完全支持本地事务 ACID 原义的分布式事务处理引擎;
-    
+
 - 弹性伸缩:可以随时随地的在不影响现有应用的情况下,动态对数据存储节点扩容和缩容;
-    
-- 多数据副本:自动将数据以强一致、高性能的方式复制至跨机房的多个副本,以保证数据的绝对安全;
-    
+
+- 强一致多副本:自动将数据以强一致、高性能的方式复制至跨机房的多个副本,以保证数据的绝对安全;
+
 - HTAP:采用同一套产品混合处理 OLTP 的事务型操作和 OLAP 的分析型操作。
-    
+
 
 分布式数据库的实现方案可以划分为进取型和稳定型。进取型实现方案是指开发全新架构的 NewSQL。这类产品以追求更高性能换取稳定性的缺失和运维经验的不足;稳定型的实现方案是指在现有数据库的基础上提供增量能力的中间件。这类产品则以牺牲部分性能以保证数据库的稳定性和运维经验的复用。
 
@@ -260,9 +260,9 @@ Apache ShardingSphere 对数据库类型的支持将完全开放,除了关系
 
 目前 Apache ShardingSphere 只是将 SQL 通过正确的路由和改写,分发至相应的数据库以操作数据。计算下发能够充分利用的数据库的查询引擎,但无法有效的支持复杂关联查询和子查询。基于关系代数实现的 SQL on KV 查询引擎随着 JDTX 的开发日臻成熟,将其积累的经验反哺于 SQL 查询引擎,能够让 Apache ShardingSphere 更好的支持子查询和跨库关联查询等复杂查询。
 
-#### 多数据副本
+#### 强一致多副本
 
-分布式数据库所需要的多数据副本能力目前的 Apache ShardingSphere 还未具备。未来 Apache ShardingSphere 将提供基于 Raft 的多副本写入能力。
+分布式数据库所需要的多数据副本能力目前的 Apache ShardingSphere 还未具备。未来 Apache ShardingSphere 将提供基于 Raft 的强一致多副本写入能力。
 
 #### Database Mesh
 
diff --git a/docs/blog/content/material/database.en.md b/docs/blog/content/material/database.en.md
index 0651203..27581ff 100644
--- a/docs/blog/content/material/database.en.md
+++ b/docs/blog/content/material/database.en.md
@@ -18,17 +18,17 @@ Historically, the database space has been dominated by Western technology compan
   Fully compatible with SQL and transactions for traditional relational databases, and naturally friendly to distribution, is the design goal of distributed database solutions. Its core functions are mainly concentrated in the following points:
 
 - Distributed storage: Data storage is not limited by the disk capacity of a single machine, and the storage capacity can be improved by increasing the number of data servers;
-    
+
 - Separation of computing and storage: Computing nodes are stateless and can increase computing power through horizontal expansion. Storage nodes and computing nodes can be optimized hierarchically;
-  
+
 - Distributed transaction: A high-performance, distributed transaction processing engine that fully supports the original meaning of local transactions ACID;
-    
+
 - Elastic scaling: You can dynamically expand and shrink data storage nodes anytime, anywhere without affecting existing applications;
-    
-- Multiple replica: Automatically copy the data to multiple copies across data centers in a strong and consistent manner to ensure the absolute security of the data;
-    
+
+- Consensus replication: Automatically copy the data to multiple copies across data centers in a strong and consistent manner to ensure the absolute security of the data;
+
 - HTAP: The same set of products is used to mix transactional operations of OLTP and analytical operations of OLAP.
-    
+
 
 The implementation solutions of distributed database can be divided into aggressive and stable. The aggressive implementation solution refers to the development of a new architecture of NewSQL. Such products are focus on higher performance in exchange for the lack of stability and the lack of experience in operation and maintenance; the stable implementation solution refers to the middleware that provides incremental capabilities based on the existing database. Such products sacrifice so [...]
 
@@ -261,7 +261,7 @@ Apache ShardingSphere's support for database types will be completely open. In a
 
 At present, Apache ShardingSphere only distributes SQL to the corresponding database through correct routing and rewriting to manipulate the data. The query optimizer that calculates and issues the database that can be fully utilized, but cannot effectively support complex related queries and subqueries. The SQL on KV query optimizer based on relational algebra has become mature with the development of JDTX, and its accumulated experience is fed back to the SQL query optimizer, which can [...]
 
-#### Multiple replica
+#### Consensus replication
 
 The multiple data copy capabilities required by distributed databases are not currently available in Apache ShardingSphere. In the future, Apache ShardingSphere will provide multi-copy write capability based on Raft.
 
diff --git a/docs/document/content/dev-manual/configuration.cn.md b/docs/document/content/dev-manual/configuration.cn.md
index a5f07a3..2033e7c 100644
--- a/docs/document/content/dev-manual/configuration.cn.md
+++ b/docs/document/content/dev-manual/configuration.cn.md
@@ -11,13 +11,13 @@ chapter = true
 | ------------------------- | -------------------------------------- |
 | ShardingSphereRuleBuilder | 用于将用户配置转化为规则对象               |
 
-| *已知实现类*               | *详细说明*                               |
-| ------------------------- | --------------------------------------- |
-| ShardingRuleBuilder       | 用于将分片用户配置转化为分片规则对象        |
-| MasterSlaveRuleBuilder    | 用于将读写分离用户配置转化为读写分离规则对象 |
-| ReplicaRuleBuilder        | 用于将多副本用户配置转化为多副本规则对象     |
-| EncryptRuleBuilder        | 用于将加密用户配置转化为加密规则对象        |
-| ShadowRuleBuilder         | 用于将影子库用户配置转化为影子库规则对象     |
+| *已知实现类*                    | *详细说明*                                      |
+| ------------------------------ | ---------------------------------------------- |
+| ShardingRuleBuilder            | 用于将分片用户配置转化为分片规则对象               |
+| MasterSlaveRuleBuilder         | 用于将读写分离用户配置转化为读写分离规则对象        |
+| ConsensusReplicationRuleBuilder| 用于将强一致多副本用户配置转化为强一致多副本规则对象 |
+| EncryptRuleBuilder             | 用于将加密用户配置转化为加密规则对象               |
+| ShadowRuleBuilder              | 用于将影子库用户配置转化为影子库规则对象           |
 
 ## YamlRuleConfigurationSwapper
 
@@ -25,13 +25,13 @@ chapter = true
 | --------------------------------------- | ------------------------------------------ |
 | YamlRuleConfigurationSwapper            | 用于将 YAML 配置转化为标准用户配置             |
 
-| *已知实现类*                             | *详细说明*                                   |
-| --------------------------------------- | ------------------------------------------- |
-| ShardingRuleConfigurationYamlSwapper    | 用于将分片的 YAML 配置转化为分片标准配置        |
-| MasterSlaveRuleConfigurationYamlSwapper | 用于将读写分离的 YAML 配置转化为读写分离标准配置 |
-| ReplicaRuleConfigurationYamlSwapper     | 用于将多副本的 YAML 分片配置转化为多副本标准配置 |
-| EncryptRuleConfigurationYamlSwapper     | 用于将加密的 YAML 分片配置转化为加密标准配置     |
-| ShadowRuleConfigurationYamlSwapper      | 用于将影子库的 YAML 分片配置转化为影子库标准配置 |
+| *已知实现类*                                      | *详细说明*                                             |
+| ------------------------------------------------ | ----------------------------------------------------- |
+| ShardingRuleConfigurationYamlSwapper             | 用于将分片的 YAML 配置转化为分片标准配置                  |
+| MasterSlaveRuleConfigurationYamlSwapper          | 用于将读写分离的 YAML 配置转化为读写分离标准配置           |
+| ConsensusReplicationRuleConfigurationYamlSwapper | 用于将强一致多副本的 YAML 分片配置转化为强一致多副本标准配置 |
+| EncryptRuleConfigurationYamlSwapper              | 用于将加密的 YAML 分片配置转化为加密标准配置               |
+| ShadowRuleConfigurationYamlSwapper               | 用于将影子库的 YAML 分片配置转化为影子库标准配置           |
 
 ## ShardingSphereYamlConstruct
 
diff --git a/docs/document/content/dev-manual/configuration.en.md b/docs/document/content/dev-manual/configuration.en.md
index 0cedcfd..4db191e 100644
--- a/docs/document/content/dev-manual/configuration.en.md
+++ b/docs/document/content/dev-manual/configuration.en.md
@@ -11,13 +11,13 @@ chapter = true
 | ------------------------- | ----------------------------------------------------------------------------------- |
 | ShardingSphereRuleBuilder | Used to convert user configurations to rule objects                                 |
 
-| *Implementation Class*    | *Description*                                                                       |
-| ------------------------- | ----------------------------------------------------------------------------------- |
-| ShardingRuleBuilder       | Used to convert user sharding configurations to sharding rule objects               |
-| MasterSlaveRuleBuilder    | Used to convert user master-slave configurations to master-slave rule objects       |
-| ReplicaRuleBuilder        | Used to convert user multi replica configurations to multi replica rule objects     |
-| EncryptRuleBuilder        | Used to convert user encryption configurations to encryption rule objects           |
-| ShadowRuleBuilder         | Used to convert user shadow database configurations to shadow database rule objects |
+| *Implementation Class*          | *Description*                                                                                   |
+| ------------------------------- | ----------------------------------------------------------------------------------------------- |
+| ShardingRuleBuilder             | Used to convert user sharding configurations to sharding rule objects                           |
+| MasterSlaveRuleBuilder          | Used to convert user master-slave configurations to master-slave rule objects                   |
+| ConsensusReplicationRuleBuilder | Used to convert user consensus replication configurations to consensus replication rule objects |
+| EncryptRuleBuilder              | Used to convert user encryption configurations to encryption rule objects                       |
+| ShadowRuleBuilder               | Used to convert user shadow database configurations to shadow database rule objects             |
 
 ## YamlRuleConfigurationSwapper
 
@@ -25,13 +25,13 @@ chapter = true
 | --------------------------------------- | -------------------------------------------------------------------------------------------- |
 | YamlRuleConfigurationSwapper            | Used to convert YAML configuration to standard user configuration                            |
 
-| *Implementation Class*                  | *Description*                                                                                |
-| --------------------------------------- | -------------------------------------------------------------------------------------------- |
-| ShardingRuleConfigurationYamlSwapper    | Used to convert YAML sharding configuration to standard sharding configuration               |
-| MasterSlaveRuleConfigurationYamlSwapper | Used to convert YAML master-slave configuration to standard master-slave configuration       |
-| ReplicaRuleConfigurationYamlSwapper     | Used to convert YAML multi replica configuration to standard multi replica configuration     |
-| EncryptRuleConfigurationYamlSwapper     | Used to convert YAML encryption configuration to standard encryption configuration           |
-| ShadowRuleConfigurationYamlSwapper      | Used to convert YAML shadow database configuration to standard shadow database configuration |
+| *Implementation Class*                           | *Description*                                                                                            |
+| ------------------------------------------------ | -------------------------------------------------------------------------------------------------------- |
+| ShardingRuleConfigurationYamlSwapper             | Used to convert YAML sharding configuration to standard sharding configuration                           |
+| MasterSlaveRuleConfigurationYamlSwapper          | Used to convert YAML master-slave configuration to standard master-slave configuration                   |
+| ConsensusReplicationRuleConfigurationYamlSwapper | Used to convert YAML consensus replication configuration to standard consensus replication configuration |
+| EncryptRuleConfigurationYamlSwapper              | Used to convert YAML encryption configuration to standard encryption configuration                       |
+| ShadowRuleConfigurationYamlSwapper               | Used to convert YAML shadow database configuration to standard shadow database configuration             |
 
 ## ShardingSphereYamlConstruct
 
diff --git a/docs/document/content/dev-manual/kernel.cn.md b/docs/document/content/dev-manual/kernel.cn.md
index 856cea6..9002410 100644
--- a/docs/document/content/dev-manual/kernel.cn.md
+++ b/docs/document/content/dev-manual/kernel.cn.md
@@ -49,12 +49,12 @@ chapter = true
 | ------------------------- | --------------------- |
 | RouteDecorator            | 用于处理路由结果        |
 
-| *已知实现类*               | *详细说明*             |
-| ------------------------- | --------------------- |
-| ShardingRouteDecorator    | 用于处理分片路由结果     |
-| MasterSlaveRouteDecorator | 用于处理读写分离路由结果 |
-| ReplicaRouteDecorator     | 用于处理多副本路由结果   |
-| ShadowRouteDecorator      | 用于处理影子库路由结果   |
+| *已知实现类*                        | *详细说明*                |
+| ---------------------------------- | ------------------------ |
+| ShardingRouteDecorator             | 用于处理分片路由结果       |
+| MasterSlaveRouteDecorator          | 用于处理读写分离路由结果    |
+| ConsensusReplicationRouteDecorator | 用于处理强一致多副本路由结果 |
+| ShadowRouteDecorator               | 用于处理影子库路由结果      |
 
 ## SQLRewriteContextDecorator
 
@@ -74,9 +74,9 @@ chapter = true
 | ---------------------------- | --------------------- |
 | ExecuteGroupDecorator        | 用于修改数据节点分组结果 |
 
-| *已知实现类*                  | *详细说明*             |
-| ---------------------------- | --------------------- |
-| ReplicaExecuteGroupDecorator | 用于多副本数据节点分组   |
+| *已知实现类*                               | *详细说明*                |
+| ----------------------------------------- | ------------------------ |
+| ConsensusReplicationExecuteGroupDecorator | 用于强一致多副本数据节点分组 |
 
 ## SQLExecutionHook
 
diff --git a/docs/document/content/dev-manual/kernel.en.md b/docs/document/content/dev-manual/kernel.en.md
index e2efac4..ecd7f73 100644
--- a/docs/document/content/dev-manual/kernel.en.md
+++ b/docs/document/content/dev-manual/kernel.en.md
@@ -49,12 +49,12 @@ chapter = true
 | ------------------------- | ----------------------------------------------- |
 | RouteDecorator            | Used to process routing results                 |
 
-| *Implementation Class*    | *Description*                                   |
-| ------------------------- | ----------------------------------------------- |
-| ShardingRouteDecorator    | Used to process sharding routing results        |
-| MasterSlaveRouteDecorator | Used to process master-slave routing results    |
-| ReplicaRouteDecorator     | Used to process multi replica routing results   |
-| ShadowRouteDecorator      | Used to process shadow database routing results |
+| *Implementation Class*             | *Description*                                         |
+| ---------------------------------- | ----------------------------------------------------- |
+| ShardingRouteDecorator             | Used to process sharding routing results              |
+| MasterSlaveRouteDecorator          | Used to process master-slave routing results          |
+| ConsensusReplicationRouteDecorator | Used to process consensus replication routing results |
+| ShadowRouteDecorator               | Used to process shadow database routing results       |
 
 ## SQLRewriteContextDecorator
 
@@ -74,9 +74,9 @@ chapter = true
 | ---------------------------- | -------------------------------------- |
 | ExecuteGroupDecorator        | Used by update data nodes group result |
 
-| *Implementation Class*       | *Description*                          |
-| ---------------------------- | -------------------------------------- |
-| ReplicaExecuteGroupDecorator | Used by multi replica data nodes group |
+| *Implementation Class*                    | *Description*                                  |
+| ----------------------------------------- | ---------------------------------------------- |
+| ConsensusReplicationExecuteGroupDecorator | Used by consensus replication data nodes group |
 
 ## SQLExecutionHook
 
diff --git a/docs/document/content/features/replica/_index.cn.md b/docs/document/content/features/consensus-replication/_index.cn.md
similarity index 67%
rename from docs/document/content/features/replica/_index.cn.md
rename to docs/document/content/features/consensus-replication/_index.cn.md
index 6b40f32..c635897 100644
--- a/docs/document/content/features/replica/_index.cn.md
+++ b/docs/document/content/features/consensus-replication/_index.cn.md
@@ -1,6 +1,6 @@
 +++
 pre = "<b>3.8. </b>"
-title = "多数据副本"
+title = "强一致多副本"
 weight = 8
 chapter = true
 +++
diff --git a/docs/document/content/features/replica/_index.en.md b/docs/document/content/features/consensus-replication/_index.en.md
similarity index 70%
rename from docs/document/content/features/replica/_index.en.md
rename to docs/document/content/features/consensus-replication/_index.en.md
index 8e9b69d..dfc0435 100644
--- a/docs/document/content/features/replica/_index.en.md
+++ b/docs/document/content/features/consensus-replication/_index.en.md
@@ -1,6 +1,6 @@
 +++
 pre = "<b>3.8. </b>"
-title = "Multi replica"
+title = "Consensus Replication"
 weight = 8
 chapter = true
 +++
diff --git a/docs/document/content/features/governance/management/config-center.cn.md b/docs/document/content/features/governance/management/config-center.cn.md
index d3b9e49..df95f54 100644
--- a/docs/document/content/features/governance/management/config-center.cn.md
+++ b/docs/document/content/features/governance/management/config-center.cn.md
@@ -80,7 +80,7 @@ dataSources:
 
 ### /schemas/${schemeName}/rule
 
-规则配置,可包括数据分片、读写分离、数据加密、影子库压测、多副本等配置。
+规则配置,可包括数据分片、读写分离、数据加密、影子库压测、强一致多副本等配置。
 
 ```yaml
 rules:
diff --git a/docs/document/content/features/governance/management/config-center.en.md b/docs/document/content/features/governance/management/config-center.en.md
index 41b6133..498a0b0 100644
--- a/docs/document/content/features/governance/management/config-center.en.md
+++ b/docs/document/content/features/governance/management/config-center.en.md
@@ -80,7 +80,7 @@ dataSources:
 
 ### /schemas/${schemeName}/rule
 
-Rule configurations, including sharding, read-write split, data encryption, shadow DB, multi replica configurations.
+Rule configurations, including sharding, read-write split, data encryption, shadow DB, consensus replication configurations.
 
 ```yaml
 rules:
diff --git a/docs/document/content/features/pluggable-architecture/_index.cn.md b/docs/document/content/features/pluggable-architecture/_index.cn.md
index 99197bf..e3d151b 100644
--- a/docs/document/content/features/pluggable-architecture/_index.cn.md
+++ b/docs/document/content/features/pluggable-architecture/_index.cn.md
@@ -16,7 +16,7 @@ SPI 是一种为了被第三方实现或扩展的 API,它可以用于实现框
 设计一套将功能开发完全隔离的架构体系,既可以最大限度的将开源社区的活力激发出来,也能够保障项目的质量。
 
 Apache ShardingSphere 5.x 版本开始致力于可插拔架构,项目的功能组件能够灵活的以可插拔的方式进行扩展。
-目前,数据分片、读写分离、多数据副本、数据加密、影子库压测等功能,以及对 MySQL、PostgreSQL、SQLServer、Oracle 等 SQL 与协议的支持,均通过插件的方式织入项目。
+目前,数据分片、读写分离、强一致多副本、数据加密、影子库压测等功能,以及对 MySQL、PostgreSQL、SQLServer、Oracle 等 SQL 与协议的支持,均通过插件的方式织入项目。
 Apache ShardingSphere 目前已提供数十个 SPI 作为系统的扩展点,而且仍在不断增加中。
 
 ## 目标
diff --git a/docs/document/content/features/pluggable-architecture/_index.en.md b/docs/document/content/features/pluggable-architecture/_index.en.md
index c58a040..8b1ef95 100644
--- a/docs/document/content/features/pluggable-architecture/_index.en.md
+++ b/docs/document/content/features/pluggable-architecture/_index.en.md
@@ -17,7 +17,7 @@ It needs to make each module decouple to independent and imperceptible to each o
 Design an architecture to completely isolate each function, not only can stimulate the enthusiasm of the open source community, but also can guarantee the quality of the project.
 
 Apache ShardingSphere begin to focus on pluggable architecture from version 5.x, features can be embedded into project flexibility.
-Currently, the features such as data sharding, read-write splitting, multi replica, data encrypt, shadow test, and SQL dialects / database protocols such as MySQL, PostgreSQL, SQLServer, Oracle supported are all weaved by plugins.
+Currently, the features such as data sharding, read-write splitting, consensus replication, data encrypt, shadow test, and SQL dialects / database protocols such as MySQL, PostgreSQL, SQLServer, Oracle supported are all weaved by plugins.
 There are lots of SPI extensions for Apache ShardingSphere now and increase continuously.
 
 ## Goal
diff --git a/docs/document/content/overview/_index.cn.md b/docs/document/content/overview/_index.cn.md
index b2cce22..b56c76e 100644
--- a/docs/document/content/overview/_index.cn.md
+++ b/docs/document/content/overview/_index.cn.md
@@ -18,7 +18,7 @@ Apache ShardingSphere 定位为关系型数据库中间件,旨在充分合理
 它通过关注不变,进而抓住事物本质。关系型数据库当今依然占有巨大市场,是各个公司核心业务的基石,未来也难于撼动,我们目前阶段更加关注在原有基础上的增量,而非颠覆。
 
 Apache ShardingSphere 5.x 版本开始致力于可插拔架构,项目的功能组件能够灵活的以可插拔的方式进行扩展。
-目前,数据分片、读写分离、多数据副本、数据加密、影子库压测等功能,以及对 MySQL、PostgreSQL、SQLServer、Oracle 等 SQL 与协议的支持,均通过插件的方式织入项目。
+目前,数据分片、读写分离、强一致多副本、数据加密、影子库压测等功能,以及对 MySQL、PostgreSQL、SQLServer、Oracle 等 SQL 与协议的支持,均通过插件的方式织入项目。
 开发者能够像使用积木一样定制属于自己的独特系统。Apache ShardingSphere 目前已提供数十个 SPI 作为系统的扩展点,而且仍在不断增加中。
 
 ShardingSphere 已于2020年4月16日成为 [Apache 软件基金会](https://apache.org/index.html#projects-list)的顶级项目。
diff --git a/docs/document/content/overview/_index.en.md b/docs/document/content/overview/_index.en.md
index 52caf5a..85d5593 100644
--- a/docs/document/content/overview/_index.en.md
+++ b/docs/document/content/overview/_index.en.md
@@ -18,7 +18,7 @@ Aiming at reasonably making full use of the computation and storage capacity of
 As the cornerstone of many enterprises, relational database still takes a huge market share. Therefore, at current stage, we prefer to focus on its increment instead of a total overturn.
 
 Apache ShardingSphere begin to focus on pluggable architecture from version 5.x, features can be embedded into project flexibility.
-Currently, the features such as data sharding, read-write splitting, multi replica, data encrypt, shadow test, and SQL dialects / database protocols such as MySQL, PostgreSQL, SQLServer, Oracle supported are all weaved by plugins.
+Currently, the features such as data sharding, read-write splitting, consensus replication, data encrypt, shadow test, and SQL dialects / database protocols such as MySQL, PostgreSQL, SQLServer, Oracle supported are all weaved by plugins.
 Developers can customize their own ShardingSphere just like building lego blocks. There are lots of SPI extensions for Apache ShardingSphere now and increase continuously.
 
 ShardingSphere became an [Apache](https://apache.org/index.html#projects-list) Top Level Project on April 16 2020.
diff --git a/docs/document/content/user-manual/shardingsphere-jdbc/configuration/_index.cn.md b/docs/document/content/user-manual/shardingsphere-jdbc/configuration/_index.cn.md
index 32246e5..5e452ac 100644
--- a/docs/document/content/user-manual/shardingsphere-jdbc/configuration/_index.cn.md
+++ b/docs/document/content/user-manual/shardingsphere-jdbc/configuration/_index.cn.md
@@ -10,4 +10,4 @@ chapter = true
 本章节是 ShardingSphere-JDBC 的配置参考手册,需要时可当做字典查阅。
 
 ShardingSphere-JDBC 提供了 4 种配置方式,用于不同的使用场景。
-通过配置,应用开发者可以灵活的使用数据分片、读写分离、多副本、数据加密、影子库等功能,并且能够叠加使用。
+通过配置,应用开发者可以灵活的使用数据分片、读写分离、强一致多副本、数据加密、影子库等功能,并且能够叠加使用。
diff --git a/docs/document/content/user-manual/shardingsphere-jdbc/configuration/_index.en.md b/docs/document/content/user-manual/shardingsphere-jdbc/configuration/_index.en.md
index 42a45f4..80822af 100644
--- a/docs/document/content/user-manual/shardingsphere-jdbc/configuration/_index.en.md
+++ b/docs/document/content/user-manual/shardingsphere-jdbc/configuration/_index.en.md
@@ -11,4 +11,4 @@ through which developers can quickly and clearly understand the functions provid
 This chapter is a configuration manual for ShardingSphere-JDBC, which can also be referred to as a dictionary if necessary.
 
 ShardingSphere-JDBC has provided 4 kinds of configuration methods for different situations. 
-By configuration, application developers can flexibly use data sharding, read-write splitting, multi replica, data encryption, shadow database or the combination of them.
+By configuration, application developers can flexibly use data sharding, read-write splitting, consensus replication, data encryption, shadow database or the combination of them.
diff --git a/docs/document/content/user-manual/shardingsphere-jdbc/configuration/java-api/consensus-replication.cn.md b/docs/document/content/user-manual/shardingsphere-jdbc/configuration/java-api/consensus-replication.cn.md
new file mode 100644
index 0000000..f5e911d
--- /dev/null
+++ b/docs/document/content/user-manual/shardingsphere-jdbc/configuration/java-api/consensus-replication.cn.md
@@ -0,0 +1,10 @@
++++
+title = "强一致多副本"
+weight = 5
++++
+
+## 配置入口
+
+类名称:org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationRuleConfiguration
+
+TODO
diff --git a/docs/document/content/user-manual/shardingsphere-jdbc/configuration/java-api/consensus-replication.en.md b/docs/document/content/user-manual/shardingsphere-jdbc/configuration/java-api/consensus-replication.en.md
new file mode 100644
index 0000000..539e50f
--- /dev/null
+++ b/docs/document/content/user-manual/shardingsphere-jdbc/configuration/java-api/consensus-replication.en.md
@@ -0,0 +1,10 @@
++++
+title = "Consensus Replication"
+weight = 5
++++
+
+## Root Configuration
+
+Class name: org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationRuleConfiguration
+
+TODO
diff --git a/docs/document/content/user-manual/shardingsphere-jdbc/configuration/java-api/replica.cn.md b/docs/document/content/user-manual/shardingsphere-jdbc/configuration/java-api/replica.cn.md
deleted file mode 100644
index 06d898e..0000000
--- a/docs/document/content/user-manual/shardingsphere-jdbc/configuration/java-api/replica.cn.md
+++ /dev/null
@@ -1,10 +0,0 @@
-+++
-title = "多数据副本"
-weight = 5
-+++
-
-## 配置入口
-
-类名称:org.apache.shardingsphere.replica.api.config.ReplicaRuleConfiguration
-
-TODO
diff --git a/docs/document/content/user-manual/shardingsphere-jdbc/configuration/java-api/replica.en.md b/docs/document/content/user-manual/shardingsphere-jdbc/configuration/java-api/replica.en.md
deleted file mode 100644
index 1efbfa8..0000000
--- a/docs/document/content/user-manual/shardingsphere-jdbc/configuration/java-api/replica.en.md
+++ /dev/null
@@ -1,10 +0,0 @@
-+++
-title = "Multi Replica"
-weight = 5
-+++
-
-## Root Configuration
-
-Class name: org.apache.shardingsphere.replica.api.config.ReplicaRuleConfiguration
-
-TODO
diff --git a/docs/document/content/user-manual/shardingsphere-jdbc/configuration/spring-namespace/replica.cn.md b/docs/document/content/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/consensus-replication.cn.md
similarity index 60%
rename from docs/document/content/user-manual/shardingsphere-jdbc/configuration/spring-namespace/replica.cn.md
rename to docs/document/content/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/consensus-replication.cn.md
index 03d982a..debbb4b 100644
--- a/docs/document/content/user-manual/shardingsphere-jdbc/configuration/spring-namespace/replica.cn.md
+++ b/docs/document/content/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/consensus-replication.cn.md
@@ -1,5 +1,5 @@
 +++
-title = "多数据副本"
+title = "强一致多副本"
 weight = 5
 +++
 
diff --git a/docs/document/content/user-manual/shardingsphere-jdbc/configuration/yaml/replica.en.md b/docs/document/content/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/consensus-replication.en.md
similarity index 65%
rename from docs/document/content/user-manual/shardingsphere-jdbc/configuration/yaml/replica.en.md
rename to docs/document/content/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/consensus-replication.en.md
index 9f63129..f5dc0b6 100644
--- a/docs/document/content/user-manual/shardingsphere-jdbc/configuration/yaml/replica.en.md
+++ b/docs/document/content/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/consensus-replication.en.md
@@ -1,5 +1,5 @@
 +++
-title = "Multi Replica"
+title = "Consensus Replication"
 weight = 5
 +++
 
diff --git a/docs/document/content/user-manual/shardingsphere-jdbc/configuration/yaml/replica.cn.md b/docs/document/content/user-manual/shardingsphere-jdbc/configuration/spring-namespace/consensus-replication.cn.md
similarity index 60%
rename from docs/document/content/user-manual/shardingsphere-jdbc/configuration/yaml/replica.cn.md
rename to docs/document/content/user-manual/shardingsphere-jdbc/configuration/spring-namespace/consensus-replication.cn.md
index 03d982a..debbb4b 100644
--- a/docs/document/content/user-manual/shardingsphere-jdbc/configuration/yaml/replica.cn.md
+++ b/docs/document/content/user-manual/shardingsphere-jdbc/configuration/spring-namespace/consensus-replication.cn.md
@@ -1,5 +1,5 @@
 +++
-title = "多数据副本"
+title = "强一致多副本"
 weight = 5
 +++
 
diff --git a/docs/document/content/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/replica.en.md b/docs/document/content/user-manual/shardingsphere-jdbc/configuration/spring-namespace/consensus-replication.en.md
similarity index 65%
rename from docs/document/content/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/replica.en.md
rename to docs/document/content/user-manual/shardingsphere-jdbc/configuration/spring-namespace/consensus-replication.en.md
index 9f63129..f5dc0b6 100644
--- a/docs/document/content/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/replica.en.md
+++ b/docs/document/content/user-manual/shardingsphere-jdbc/configuration/spring-namespace/consensus-replication.en.md
@@ -1,5 +1,5 @@
 +++
-title = "Multi Replica"
+title = "Consensus Replication"
 weight = 5
 +++
 
diff --git a/docs/document/content/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/replica.cn.md b/docs/document/content/user-manual/shardingsphere-jdbc/configuration/yaml/consensus-replication.cn.md
similarity index 60%
rename from docs/document/content/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/replica.cn.md
rename to docs/document/content/user-manual/shardingsphere-jdbc/configuration/yaml/consensus-replication.cn.md
index 03d982a..debbb4b 100644
--- a/docs/document/content/user-manual/shardingsphere-jdbc/configuration/spring-boot-starter/replica.cn.md
+++ b/docs/document/content/user-manual/shardingsphere-jdbc/configuration/yaml/consensus-replication.cn.md
@@ -1,5 +1,5 @@
 +++
-title = "多数据副本"
+title = "强一致多副本"
 weight = 5
 +++
 
diff --git a/docs/document/content/user-manual/shardingsphere-jdbc/configuration/spring-namespace/replica.en.md b/docs/document/content/user-manual/shardingsphere-jdbc/configuration/yaml/consensus-replication.en.md
similarity index 65%
rename from docs/document/content/user-manual/shardingsphere-jdbc/configuration/spring-namespace/replica.en.md
rename to docs/document/content/user-manual/shardingsphere-jdbc/configuration/yaml/consensus-replication.en.md
index 9f63129..f5dc0b6 100644
--- a/docs/document/content/user-manual/shardingsphere-jdbc/configuration/spring-namespace/replica.en.md
+++ b/docs/document/content/user-manual/shardingsphere-jdbc/configuration/yaml/consensus-replication.en.md
@@ -1,5 +1,5 @@
 +++
-title = "Multi Replica"
+title = "Consensus Replication"
 weight = 5
 +++
 
diff --git a/docs/document/content/user-manual/shardingsphere-jdbc/usage/sharding/_index.cn.md b/docs/document/content/user-manual/shardingsphere-jdbc/usage/sharding/_index.cn.md
index 85d1be9..3b16328 100644
--- a/docs/document/content/user-manual/shardingsphere-jdbc/usage/sharding/_index.cn.md
+++ b/docs/document/content/user-manual/shardingsphere-jdbc/usage/sharding/_index.cn.md
@@ -5,6 +5,6 @@ chapter = true
 +++
 
 数据分片是 Apache ShardingSphere 的基础能力,本节以数据分片的使用举例。
-除数据分片之外,读写分离、多副本、数据加密、影子库压测等功能的使用方法完全一致,只要配置相应的规则即可。多规则可以叠加配置。
+除数据分片之外,读写分离、强一致多副本、数据加密、影子库压测等功能的使用方法完全一致,只要配置相应的规则即可。多规则可以叠加配置。
 
 详情请参见[配置手册](/cn/user-manual/shardingsphere-jdbc/configuration/)。
diff --git a/docs/document/content/user-manual/shardingsphere-jdbc/usage/sharding/_index.en.md b/docs/document/content/user-manual/shardingsphere-jdbc/usage/sharding/_index.en.md
index 2def42e..243ea52 100644
--- a/docs/document/content/user-manual/shardingsphere-jdbc/usage/sharding/_index.en.md
+++ b/docs/document/content/user-manual/shardingsphere-jdbc/usage/sharding/_index.en.md
@@ -6,7 +6,7 @@ chapter = true
 
 Data sharding is the basic capability of Apache ShardingSphere. 
 This section uses data sharding as an example.
-The usage of functions such as read-write-splitting, multi replica, data encryption, shadow database is completely consistent with data sharding, as long as the corresponding rules are configured. 
+The usage of functions such as read-write-splitting, consensus replication, data encryption, shadow database is completely consistent with data sharding, as long as the corresponding rules are configured. 
 Multiple rules can be appended.
 
 Please refer to [Configuration Manual](/en/user-manual/shardingsphere-jdbc/configuration/) for more details.
diff --git a/docs/document/content/user-manual/shardingsphere-proxy/configuration/_index.cn.md b/docs/document/content/user-manual/shardingsphere-proxy/configuration/_index.cn.md
index b87f93a..b1b4cfd 100644
--- a/docs/document/content/user-manual/shardingsphere-proxy/configuration/_index.cn.md
+++ b/docs/document/content/user-manual/shardingsphere-proxy/configuration/_index.cn.md
@@ -9,6 +9,6 @@ weight = 2
 本章节是 ShardingSphere-Proxy 的配置参考手册,需要时可当做字典查阅。
 
 ShardingSphere-Proxy 只提供基于 YAML 的配置方式。
-通过配置,应用开发者可以灵活的使用数据分片、读写分离、多副本、数据加密、影子库等功能,并且能够叠加使用。
+通过配置,应用开发者可以灵活的使用数据分片、读写分离、强一致多副本、数据加密、影子库等功能,并且能够叠加使用。
 
 规则配置部分与 ShardingSphere-JDBC 的 YAML 配置完全一致。
diff --git a/docs/document/content/user-manual/shardingsphere-proxy/configuration/_index.en.md b/docs/document/content/user-manual/shardingsphere-proxy/configuration/_index.en.md
index 5ae86c3..04b74f4 100644
--- a/docs/document/content/user-manual/shardingsphere-proxy/configuration/_index.en.md
+++ b/docs/document/content/user-manual/shardingsphere-proxy/configuration/_index.en.md
@@ -10,6 +10,6 @@ through which developer can quickly and clearly understand the functions provide
 This chapter is a configuration manual for ShardingSphere-Proxy, which can also be referred to as a dictionary if necessary.
 
 ShardingSphere-Proxy only provided YAML configuration. 
-By configuration, application developers can flexibly use data sharding, read-write splitting, multi replica, data encryption, shadow database or the combination of them.
+By configuration, application developers can flexibly use data sharding, read-write splitting, consensus replication, data encryption, shadow database or the combination of them.
 
 Rule configuration keeps consist with YAML configuration of ShardingSphere-JDBC.
diff --git a/shardingsphere-features/pom.xml b/shardingsphere-features/pom.xml
index 50c4fec..8e136be 100644
--- a/shardingsphere-features/pom.xml
+++ b/shardingsphere-features/pom.xml
@@ -31,9 +31,9 @@
     
     <modules>
         <module>shardingsphere-sharding</module>
-        <module>shardingsphere-replica</module>
         <module>shardingsphere-master-slave</module>
         <module>shardingsphere-encrypt</module>
         <module>shardingsphere-shadow</module>
+        <module>shardingsphere-consensus-replication</module>
     </modules>
 </project>
diff --git a/shardingsphere-features/shardingsphere-replica/pom.xml b/shardingsphere-features/shardingsphere-consensus-replication/pom.xml
similarity index 80%
rename from shardingsphere-features/shardingsphere-replica/pom.xml
rename to shardingsphere-features/shardingsphere-consensus-replication/pom.xml
index 3763e44..789abfd 100644
--- a/shardingsphere-features/shardingsphere-replica/pom.xml
+++ b/shardingsphere-features/shardingsphere-consensus-replication/pom.xml
@@ -25,14 +25,14 @@
         <artifactId>shardingsphere-features</artifactId>
         <version>5.0.0-RC1-SNAPSHOT</version>
     </parent>
-    <artifactId>shardingsphere-replica</artifactId>
+    <artifactId>shardingsphere-consensus-replication</artifactId>
     <name>${project.artifactId}</name>
     <packaging>pom</packaging>
     
     <modules>
-        <module>shardingsphere-replica-api</module>
-        <module>shardingsphere-replica-common</module>
-        <module>shardingsphere-replica-route</module>
-        <module>shardingsphere-replica-execute</module>
+        <module>shardingsphere-consensus-replication-api</module>
+        <module>shardingsphere-consensus-replication-common</module>
+        <module>shardingsphere-consensus-replication-route</module>
+        <module>shardingsphere-consensus-replication-executor</module>
     </modules>
 </project>
diff --git a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-api/pom.xml b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-api/pom.xml
similarity index 91%
rename from shardingsphere-features/shardingsphere-replica/shardingsphere-replica-api/pom.xml
rename to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-api/pom.xml
index 73e24f0..060493c 100644
--- a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-api/pom.xml
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-api/pom.xml
@@ -22,10 +22,10 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.shardingsphere</groupId>
-        <artifactId>shardingsphere-replica</artifactId>
+        <artifactId>shardingsphere-consensus-replication</artifactId>
         <version>5.0.0-RC1-SNAPSHOT</version>
     </parent>
-    <artifactId>shardingsphere-replica-api</artifactId>
+    <artifactId>shardingsphere-consensus-replication-api</artifactId>
     <name>${project.artifactId}</name>
     
     <dependencies>
diff --git a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-api/src/main/java/org/apache/shardingsphere/replica/api/config/ReplicaActualTableRuleConfiguration.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-api/src/main/java/org/apache/shardingsphere/replication/consensus/api/config/ConsensusReplicationActualTableRuleConfiguration.java
similarity index 81%
rename from shardingsphere-features/shardingsphere-replica/shardingsphere-replica-api/src/main/java/org/apache/shardingsphere/replica/api/config/ReplicaActualTableRuleConfiguration.java
rename to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-api/src/main/java/org/apache/shardingsphere/replication/consensus/api/config/ConsensusReplicationActualTableRuleConfiguration.java
index 3c62c18..de4d474 100644
--- a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-api/src/main/java/org/apache/shardingsphere/replica/api/config/ReplicaActualTableRuleConfiguration.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-api/src/main/java/org/apache/shardingsphere/replication/consensus/api/config/ConsensusReplicationActualTableRuleConfiguration.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.replica.api.config;
+package org.apache.shardingsphere.replication.consensus.api.config;
 
 import com.google.common.base.Preconditions;
 import com.google.common.base.Strings;
@@ -23,10 +23,10 @@ import lombok.Getter;
 import org.apache.shardingsphere.infra.config.RuleConfiguration;
 
 /**
- * Replica actual table rule configuration.
+ * Consensus replication actual table rule configuration.
  */
 @Getter
-public final class ReplicaActualTableRuleConfiguration implements RuleConfiguration {
+public final class ConsensusReplicationActualTableRuleConfiguration implements RuleConfiguration {
     
     private final String physicsTable;
     
@@ -36,7 +36,7 @@ public final class ReplicaActualTableRuleConfiguration implements RuleConfigurat
     
     private final String dataSourceName;
     
-    public ReplicaActualTableRuleConfiguration(final String physicsTable, final String replicaGroupId, final String replicaPeers, final String dataSourceName) {
+    public ConsensusReplicationActualTableRuleConfiguration(final String physicsTable, final String replicaGroupId, final String replicaPeers, final String dataSourceName) {
         Preconditions.checkArgument(!Strings.isNullOrEmpty(physicsTable), "physicsTable is required.");
         Preconditions.checkArgument(!Strings.isNullOrEmpty(replicaGroupId), "replicaGroupId is required.");
         Preconditions.checkArgument(!Strings.isNullOrEmpty(replicaPeers), "replicaPeers is required.");
diff --git a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-api/src/main/java/org/apache/shardingsphere/replica/api/config/ReplicaLogicTableRuleConfiguration.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-api/src/main/java/org/apache/shardingsphere/replication/consensus/api/config/ConsensusReplicationLogicTableRuleConfiguration.java
similarity index 71%
rename from shardingsphere-features/shardingsphere-replica/shardingsphere-replica-api/src/main/java/org/apache/shardingsphere/replica/api/config/ReplicaLogicTableRuleConfiguration.java
rename to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-api/src/main/java/org/apache/shardingsphere/replication/consensus/api/config/ConsensusReplicationLogicTableRuleConfiguration.java
index 97798ac..1524d8a 100644
--- a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-api/src/main/java/org/apache/shardingsphere/replica/api/config/ReplicaLogicTableRuleConfiguration.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-api/src/main/java/org/apache/shardingsphere/replication/consensus/api/config/ConsensusReplicationLogicTableRuleConfiguration.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.replica.api.config;
+package org.apache.shardingsphere.replication.consensus.api.config;
 
 import lombok.Getter;
 import org.apache.shardingsphere.infra.config.RuleConfiguration;
@@ -24,16 +24,16 @@ import java.util.Collection;
 import java.util.Collections;
 
 /**
- * Replica logic table rule configuration.
+ * Consensus replication logic table rule configuration.
  */
 @Getter
-public final class ReplicaLogicTableRuleConfiguration implements RuleConfiguration {
+public final class ConsensusReplicationLogicTableRuleConfiguration implements RuleConfiguration {
     
     private final String logicTable;
     
-    private final Collection<ReplicaActualTableRuleConfiguration> replicaGroups;
+    private final Collection<ConsensusReplicationActualTableRuleConfiguration> replicaGroups;
     
-    public ReplicaLogicTableRuleConfiguration(final String logicTable, final Collection<ReplicaActualTableRuleConfiguration> replicaGroups) {
+    public ConsensusReplicationLogicTableRuleConfiguration(final String logicTable, final Collection<ConsensusReplicationActualTableRuleConfiguration> replicaGroups) {
         this.logicTable = logicTable;
         if (null != replicaGroups) {
             this.replicaGroups = replicaGroups;
diff --git a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-api/src/main/java/org/apache/shardingsphere/replica/api/config/ReplicaRuleConfiguration.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-api/src/main/java/org/apache/shardingsphere/replication/consensus/api/config/ConsensusReplicationRuleConfiguration.java
similarity index 67%
rename from shardingsphere-features/shardingsphere-replica/shardingsphere-replica-api/src/main/java/org/apache/shardingsphere/replica/api/config/ReplicaRuleConfiguration.java
rename to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-api/src/main/java/org/apache/shardingsphere/replication/consensus/api/config/ConsensusReplicationRuleConfiguration.java
index fa236b9..4f75945 100644
--- a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-api/src/main/java/org/apache/shardingsphere/replica/api/config/ReplicaRuleConfiguration.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-api/src/main/java/org/apache/shardingsphere/replication/consensus/api/config/ConsensusReplicationRuleConfiguration.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.replica.api.config;
+package org.apache.shardingsphere.replication.consensus.api.config;
 
 import lombok.Getter;
 import org.apache.shardingsphere.infra.config.RuleConfiguration;
@@ -24,18 +24,14 @@ import java.util.Collection;
 import java.util.Collections;
 
 /**
- * Replica rule configuration.
+ * Consensus replication rule configuration.
  */
 @Getter
-public final class ReplicaRuleConfiguration implements RuleConfiguration {
+public final class ConsensusReplicationRuleConfiguration implements RuleConfiguration {
     
-    private final Collection<ReplicaLogicTableRuleConfiguration> tables;
+    private final Collection<ConsensusReplicationLogicTableRuleConfiguration> tables;
     
-    public ReplicaRuleConfiguration(final Collection<ReplicaLogicTableRuleConfiguration> tables) {
-        if (null != tables) {
-            this.tables = tables;
-        } else {
-            this.tables = Collections.emptyList();
-        }
+    public ConsensusReplicationRuleConfiguration(final Collection<ConsensusReplicationLogicTableRuleConfiguration> tables) {
+        this.tables = null == tables ? Collections.emptyList() : tables;
     }
 }
diff --git a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/pom.xml b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/pom.xml
similarity index 87%
rename from shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/pom.xml
rename to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/pom.xml
index 5ae2d87..1950582 100644
--- a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/pom.xml
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/pom.xml
@@ -22,16 +22,16 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.shardingsphere</groupId>
-        <artifactId>shardingsphere-replica</artifactId>
+        <artifactId>shardingsphere-consensus-replication</artifactId>
         <version>5.0.0-RC1-SNAPSHOT</version>
     </parent>
-    <artifactId>shardingsphere-replica-common</artifactId>
+    <artifactId>shardingsphere-consensus-replication-common</artifactId>
     <name>${project.artifactId}</name>
     
     <dependencies>
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
-            <artifactId>shardingsphere-replica-api</artifactId>
+            <artifactId>shardingsphere-consensus-replication-api</artifactId>
             <version>${project.version}</version>
         </dependency>
     </dependencies>
diff --git a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/java/org/apache/shardingsphere/replica/constant/ReplicaOrder.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/constant/ConsensusReplicationOrder.java
similarity index 86%
rename from shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/java/org/apache/shardingsphere/replica/constant/ReplicaOrder.java
rename to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/constant/ConsensusReplicationOrder.java
index 2dff541..fb77940 100644
--- a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/java/org/apache/shardingsphere/replica/constant/ReplicaOrder.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/constant/ConsensusReplicationOrder.java
@@ -15,19 +15,16 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.replica.constant;
+package org.apache.shardingsphere.replication.consensus.constant;
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 
 /**
- * Replica order.
+ * Consensus replication order.
  */
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class ReplicaOrder {
+public final class ConsensusReplicationOrder {
     
-    /**
-     * Replica order.
-     */
     public static final int ORDER = 80;
 }
diff --git a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/java/org/apache/shardingsphere/replica/rule/ReplicaRule.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/rule/ConsensusReplicationRule.java
similarity index 53%
rename from shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/java/org/apache/shardingsphere/replica/rule/ReplicaRule.java
rename to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/rule/ConsensusReplicationRule.java
index a76ae2c..bcbe34b 100644
--- a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/java/org/apache/shardingsphere/replica/rule/ReplicaRule.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/rule/ConsensusReplicationRule.java
@@ -15,14 +15,14 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.replica.rule;
+package org.apache.shardingsphere.replication.consensus.rule;
 
 import lombok.Getter;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
-import org.apache.shardingsphere.replica.api.config.ReplicaActualTableRuleConfiguration;
-import org.apache.shardingsphere.replica.api.config.ReplicaLogicTableRuleConfiguration;
-import org.apache.shardingsphere.replica.api.config.ReplicaRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationActualTableRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationLogicTableRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationRuleConfiguration;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -31,28 +31,28 @@ import java.util.Optional;
 import java.util.concurrent.ConcurrentHashMap;
 
 /**
- * Replica rule.
+ * Consensus replication rule.
  */
 @Slf4j
-public final class ReplicaRule implements ShardingSphereRule {
+public final class ConsensusReplicationRule implements ShardingSphereRule {
     
     @Getter
-    private final Collection<ReplicaTableRule> replicaTableRules;
+    private final Collection<ConsensusReplicationTableRule> replicaTableRules;
     
-    private final Map<String, ReplicaTableRule> physicsTableRules;
+    private final Map<String, ConsensusReplicationTableRule> physicsTableRules;
     
-    public ReplicaRule(final ReplicaRuleConfiguration configuration) {
-        Collection<ReplicaTableRule> replicaTableRules = new ArrayList<>();
-        Map<String, ReplicaTableRule> physicsTableRules = new ConcurrentHashMap<>();
-        for (ReplicaLogicTableRuleConfiguration entry : configuration.getTables()) {
-            for (ReplicaActualTableRuleConfiguration each : entry.getReplicaGroups()) {
+    public ConsensusReplicationRule(final ConsensusReplicationRuleConfiguration config) {
+        Collection<ConsensusReplicationTableRule> replicaTableRules = new ArrayList<>();
+        Map<String, ConsensusReplicationTableRule> physicsTableRules = new ConcurrentHashMap<>();
+        for (ConsensusReplicationLogicTableRuleConfiguration entry : config.getTables()) {
+            for (ConsensusReplicationActualTableRuleConfiguration each : entry.getReplicaGroups()) {
                 String physicsTable = each.getPhysicsTable();
-                ReplicaTableRule replaced = physicsTableRules.putIfAbsent(physicsTable, new ReplicaTableRule(each));
+                ConsensusReplicationTableRule replaced = physicsTableRules.putIfAbsent(physicsTable, new ConsensusReplicationTableRule(each));
                 if (null != replaced) {
                     log.error("key already exists, key={}", physicsTable);
                     throw new IllegalArgumentException("key already exists, key=" + physicsTable);
                 }
-                replicaTableRules.add(new ReplicaTableRule(each));
+                replicaTableRules.add(new ConsensusReplicationTableRule(each));
             }
         }
         this.replicaTableRules = replicaTableRules;
@@ -63,9 +63,9 @@ public final class ReplicaRule implements ShardingSphereRule {
      * Find routing by table.
      *
      * @param physicsTable physics table name
-     * @return replica table rule
+     * @return consensus replication table rule
      */
-    public Optional<ReplicaTableRule> findRoutingByTable(final String physicsTable) {
+    public Optional<ConsensusReplicationTableRule> findRoutingByTable(final String physicsTable) {
         return Optional.ofNullable(physicsTableRules.get(physicsTable));
     }
 }
diff --git a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/java/org/apache/shardingsphere/replica/rule/ReplicaTableRule.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/rule/ConsensusReplicationTableRule.java
similarity index 76%
rename from shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/java/org/apache/shardingsphere/replica/rule/ReplicaTableRule.java
rename to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/rule/ConsensusReplicationTableRule.java
index 56cd2c2..e9527a5 100644
--- a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/java/org/apache/shardingsphere/replica/rule/ReplicaTableRule.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/rule/ConsensusReplicationTableRule.java
@@ -15,17 +15,17 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.replica.rule;
+package org.apache.shardingsphere.replication.consensus.rule;
 
 import lombok.Getter;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
-import org.apache.shardingsphere.replica.api.config.ReplicaActualTableRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationActualTableRuleConfiguration;
 
 /**
- * Replica table rule.
+ * Consensus replication table rule.
  */
 @Getter
-public final class ReplicaTableRule implements ShardingSphereRule {
+public final class ConsensusReplicationTableRule implements ShardingSphereRule {
     
     private final String physicsTable;
     
@@ -35,7 +35,7 @@ public final class ReplicaTableRule implements ShardingSphereRule {
     
     private final String dataSourceName;
     
-    public ReplicaTableRule(final ReplicaActualTableRuleConfiguration configuration) {
+    public ConsensusReplicationTableRule(final ConsensusReplicationActualTableRuleConfiguration configuration) {
         physicsTable = configuration.getPhysicsTable();
         replicaGroupId = configuration.getReplicaGroupId();
         replicaPeers = configuration.getReplicaPeers();
diff --git a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/java/org/apache/shardingsphere/replica/rule/builder/ReplicaRuleBuilder.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/rule/builder/ConsensusReplicationRuleBuilder.java
similarity index 52%
rename from shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/java/org/apache/shardingsphere/replica/rule/builder/ReplicaRuleBuilder.java
rename to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/rule/builder/ConsensusReplicationRuleBuilder.java
index 99ba3b8..6dc93d1 100644
--- a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/java/org/apache/shardingsphere/replica/rule/builder/ReplicaRuleBuilder.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/rule/builder/ConsensusReplicationRuleBuilder.java
@@ -15,32 +15,32 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.replica.rule.builder;
+package org.apache.shardingsphere.replication.consensus.rule.builder;
 
 import org.apache.shardingsphere.infra.rule.ShardingSphereRuleBuilder;
-import org.apache.shardingsphere.replica.api.config.ReplicaRuleConfiguration;
-import org.apache.shardingsphere.replica.constant.ReplicaOrder;
-import org.apache.shardingsphere.replica.rule.ReplicaRule;
+import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.constant.ConsensusReplicationOrder;
+import org.apache.shardingsphere.replication.consensus.rule.ConsensusReplicationRule;
 
 import java.util.Collection;
 
 /**
- * Replica rule builder.
+ * Consensus replication rule builder.
  */
-public final class ReplicaRuleBuilder implements ShardingSphereRuleBuilder<ReplicaRule, ReplicaRuleConfiguration> {
+public final class ConsensusReplicationRuleBuilder implements ShardingSphereRuleBuilder<ConsensusReplicationRule, ConsensusReplicationRuleConfiguration> {
     
     @Override
-    public ReplicaRule build(final ReplicaRuleConfiguration ruleConfiguration, final Collection<String> dataSourceNames) {
-        return new ReplicaRule(ruleConfiguration);
+    public ConsensusReplicationRule build(final ConsensusReplicationRuleConfiguration ruleConfig, final Collection<String> dataSourceNames) {
+        return new ConsensusReplicationRule(ruleConfig);
     }
     
     @Override
     public int getOrder() {
-        return ReplicaOrder.ORDER;
+        return ConsensusReplicationOrder.ORDER;
     }
     
     @Override
-    public Class<ReplicaRuleConfiguration> getTypeClass() {
-        return ReplicaRuleConfiguration.class;
+    public Class<ConsensusReplicationRuleConfiguration> getTypeClass() {
+        return ConsensusReplicationRuleConfiguration.class;
     }
 }
diff --git a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/java/org/apache/shardingsphere/replica/yaml/config/YamlReplicaActualTableRuleConfiguration.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/config/YamlConsensusReplicationActualTableRuleConfiguration.java
similarity index 82%
rename from shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/java/org/apache/shardingsphere/replica/yaml/config/YamlReplicaActualTableRuleConfiguration.java
rename to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/config/YamlConsensusReplicationActualTableRuleConfiguration.java
index 91e5614..dee82cd 100644
--- a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/java/org/apache/shardingsphere/replica/yaml/config/YamlReplicaActualTableRuleConfiguration.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/config/YamlConsensusReplicationActualTableRuleConfiguration.java
@@ -15,18 +15,18 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.replica.yaml.config;
+package org.apache.shardingsphere.replication.consensus.yaml.config;
 
 import lombok.Getter;
 import lombok.Setter;
 import org.apache.shardingsphere.infra.yaml.config.YamlConfiguration;
 
 /**
- * Replica actual table rule configuration for YAML.
+ * Consensus replication actual table rule configuration for YAML.
  */
 @Getter
 @Setter
-public final class YamlReplicaActualTableRuleConfiguration implements YamlConfiguration {
+public final class YamlConsensusReplicationActualTableRuleConfiguration implements YamlConfiguration {
     
     private String physicsTable;
     
diff --git a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/java/org/apache/shardingsphere/replica/yaml/config/YamlReplicaLogicTableRuleConfiguration.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/config/YamlConsensusReplicationLogicTableRuleConfiguration.java
similarity index 74%
rename from shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/java/org/apache/shardingsphere/replica/yaml/config/YamlReplicaLogicTableRuleConfiguration.java
rename to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/config/YamlConsensusReplicationLogicTableRuleConfiguration.java
index ccbc656..c11d62f 100644
--- a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/java/org/apache/shardingsphere/replica/yaml/config/YamlReplicaLogicTableRuleConfiguration.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/config/YamlConsensusReplicationLogicTableRuleConfiguration.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.replica.yaml.config;
+package org.apache.shardingsphere.replication.consensus.yaml.config;
 
 import lombok.Getter;
 import lombok.Setter;
@@ -25,13 +25,13 @@ import java.util.Collection;
 import java.util.Collections;
 
 /**
- * Replica logic table rule configuration for YAML.
+ * Consensus replication logic table rule configuration for YAML.
  */
 @Getter
 @Setter
-public final class YamlReplicaLogicTableRuleConfiguration implements YamlConfiguration {
+public final class YamlConsensusReplicationLogicTableRuleConfiguration implements YamlConfiguration {
     
     private String logicTable;
     
-    private Collection<YamlReplicaActualTableRuleConfiguration> replicaGroups = Collections.emptyList();
+    private Collection<YamlConsensusReplicationActualTableRuleConfiguration> replicaGroups = Collections.emptyList();
 }
diff --git a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/java/org/apache/shardingsphere/replica/yaml/config/YamlReplicaRuleConfiguration.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/config/YamlConsensusReplicationRuleConfiguration.java
similarity index 70%
rename from shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/java/org/apache/shardingsphere/replica/yaml/config/YamlReplicaRuleConfiguration.java
rename to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/config/YamlConsensusReplicationRuleConfiguration.java
index 4d29916..ca25337 100644
--- a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/java/org/apache/shardingsphere/replica/yaml/config/YamlReplicaRuleConfiguration.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/config/YamlConsensusReplicationRuleConfiguration.java
@@ -15,28 +15,28 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.replica.yaml.config;
+package org.apache.shardingsphere.replication.consensus.yaml.config;
 
 import lombok.Getter;
 import lombok.Setter;
 import org.apache.shardingsphere.infra.config.RuleConfiguration;
 import org.apache.shardingsphere.infra.yaml.config.YamlRuleConfiguration;
-import org.apache.shardingsphere.replica.api.config.ReplicaRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationRuleConfiguration;
 
 import java.util.Collection;
 import java.util.Collections;
 
 /**
- * Replica rule configuration for YAML.
+ * Consensus replication rule configuration for YAML.
  */
 @Getter
 @Setter
-public final class YamlReplicaRuleConfiguration implements YamlRuleConfiguration {
+public final class YamlConsensusReplicationRuleConfiguration implements YamlRuleConfiguration {
     
-    private Collection<YamlReplicaLogicTableRuleConfiguration> tables = Collections.emptyList();
+    private Collection<YamlConsensusReplicationLogicTableRuleConfiguration> tables = Collections.emptyList();
     
     @Override
     public Class<? extends RuleConfiguration> getRuleConfigurationType() {
-        return ReplicaRuleConfiguration.class;
+        return ConsensusReplicationRuleConfiguration.class;
     }
 }
diff --git a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/java/org/apache/shardingsphere/replica/yaml/swapper/ReplicaActualTableRuleConfigurationYamlSwapper.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationActualTableRuleConfigurationYamlSwapper.java
similarity index 52%
rename from shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/java/org/apache/shardingsphere/replica/yaml/swapper/ReplicaActualTableRuleConfigurationYamlSwapper.java
rename to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationActualTableRuleConfigurationYamlSwapper.java
index d3ff571..de07d44 100644
--- a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/java/org/apache/shardingsphere/replica/yaml/swapper/ReplicaActualTableRuleConfigurationYamlSwapper.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationActualTableRuleConfigurationYamlSwapper.java
@@ -15,20 +15,21 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.replica.yaml.swapper;
+package org.apache.shardingsphere.replication.consensus.yaml.swapper;
 
 import org.apache.shardingsphere.infra.yaml.swapper.YamlSwapper;
-import org.apache.shardingsphere.replica.api.config.ReplicaActualTableRuleConfiguration;
-import org.apache.shardingsphere.replica.yaml.config.YamlReplicaActualTableRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationActualTableRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.yaml.config.YamlConsensusReplicationActualTableRuleConfiguration;
 
 /**
- * Replica actual table rule configuration YAML swapper.
+ * Consensus replication actual table rule configuration YAML swapper.
  */
-public final class ReplicaActualTableRuleConfigurationYamlSwapper implements YamlSwapper<YamlReplicaActualTableRuleConfiguration, ReplicaActualTableRuleConfiguration> {
+public final class ConsensusReplicationActualTableRuleConfigurationYamlSwapper
+        implements YamlSwapper<YamlConsensusReplicationActualTableRuleConfiguration, ConsensusReplicationActualTableRuleConfiguration> {
     
     @Override
-    public YamlReplicaActualTableRuleConfiguration swapToYamlConfiguration(final ReplicaActualTableRuleConfiguration data) {
-        YamlReplicaActualTableRuleConfiguration result = new YamlReplicaActualTableRuleConfiguration();
+    public YamlConsensusReplicationActualTableRuleConfiguration swapToYamlConfiguration(final ConsensusReplicationActualTableRuleConfiguration data) {
+        YamlConsensusReplicationActualTableRuleConfiguration result = new YamlConsensusReplicationActualTableRuleConfiguration();
         result.setPhysicsTable(data.getPhysicsTable());
         result.setReplicaGroupId(data.getReplicaGroupId());
         result.setReplicaPeers(data.getReplicaPeers());
@@ -37,8 +38,8 @@ public final class ReplicaActualTableRuleConfigurationYamlSwapper implements Yam
     }
     
     @Override
-    public ReplicaActualTableRuleConfiguration swapToObject(final YamlReplicaActualTableRuleConfiguration yamlConfiguration) {
-        return new ReplicaActualTableRuleConfiguration(yamlConfiguration.getPhysicsTable(), yamlConfiguration.getReplicaGroupId(),
+    public ConsensusReplicationActualTableRuleConfiguration swapToObject(final YamlConsensusReplicationActualTableRuleConfiguration yamlConfiguration) {
+        return new ConsensusReplicationActualTableRuleConfiguration(yamlConfiguration.getPhysicsTable(), yamlConfiguration.getReplicaGroupId(),
                 yamlConfiguration.getReplicaPeers(), yamlConfiguration.getDataSourceName());
     }
 }
diff --git a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationLogicTableRuleConfigurationYamlSwapper.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationLogicTableRuleConfigurationYamlSwa [...]
new file mode 100644
index 0000000..9855322
--- /dev/null
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationLogicTableRuleConfigurationYamlSwapper.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.replication.consensus.yaml.swapper;
+
+import org.apache.shardingsphere.infra.yaml.swapper.YamlSwapper;
+import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationActualTableRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationLogicTableRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.yaml.config.YamlConsensusReplicationActualTableRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.yaml.config.YamlConsensusReplicationLogicTableRuleConfiguration;
+
+import java.util.Collection;
+import java.util.stream.Collectors;
+
+/**
+ * Consensus replication logic table rule configuration YAML swapper.
+ */
+public final class ConsensusReplicationLogicTableRuleConfigurationYamlSwapper 
+        implements YamlSwapper<YamlConsensusReplicationLogicTableRuleConfiguration, ConsensusReplicationLogicTableRuleConfiguration> {
+    
+    private final ConsensusReplicationActualTableRuleConfigurationYamlSwapper actualTableRuleConfigurationYamlSwapper = new ConsensusReplicationActualTableRuleConfigurationYamlSwapper();
+    
+    @Override
+    public YamlConsensusReplicationLogicTableRuleConfiguration swapToYamlConfiguration(final ConsensusReplicationLogicTableRuleConfiguration data) {
+        Collection<YamlConsensusReplicationActualTableRuleConfiguration> replicaGroups = data.getReplicaGroups().stream()
+                .map(actualTableRuleConfigurationYamlSwapper::swapToYamlConfiguration).collect(Collectors.toList());
+        YamlConsensusReplicationLogicTableRuleConfiguration result = new YamlConsensusReplicationLogicTableRuleConfiguration();
+        result.setLogicTable(data.getLogicTable());
+        result.setReplicaGroups(replicaGroups);
+        return result;
+    }
+    
+    @Override
+    public ConsensusReplicationLogicTableRuleConfiguration swapToObject(final YamlConsensusReplicationLogicTableRuleConfiguration yamlConfiguration) {
+        Collection<ConsensusReplicationActualTableRuleConfiguration> replicaGroups = yamlConfiguration.getReplicaGroups().stream()
+                .map(actualTableRuleConfigurationYamlSwapper::swapToObject).collect(Collectors.toList());
+        return new ConsensusReplicationLogicTableRuleConfiguration(yamlConfiguration.getLogicTable(), replicaGroups);
+    }
+}
diff --git a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationRuleConfigurationYamlSwapper.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationRuleConfigurationYamlSwapper.java
new file mode 100644
index 0000000..579d9f4
--- /dev/null
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationRuleConfigurationYamlSwapper.java
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.replication.consensus.yaml.swapper;
+
+import org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapper;
+import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationLogicTableRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.constant.ConsensusReplicationOrder;
+import org.apache.shardingsphere.replication.consensus.yaml.config.YamlConsensusReplicationLogicTableRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.yaml.config.YamlConsensusReplicationRuleConfiguration;
+
+import java.util.Collection;
+import java.util.stream.Collectors;
+
+/**
+ * Consensus replication rule configuration YAML swapper.
+ */
+public final class ConsensusReplicationRuleConfigurationYamlSwapper implements YamlRuleConfigurationSwapper<YamlConsensusReplicationRuleConfiguration, ConsensusReplicationRuleConfiguration> {
+    
+    private final ConsensusReplicationLogicTableRuleConfigurationYamlSwapper logicTableRuleConfigurationYamlSwapper = new ConsensusReplicationLogicTableRuleConfigurationYamlSwapper();
+    
+    @Override
+    public YamlConsensusReplicationRuleConfiguration swapToYamlConfiguration(final ConsensusReplicationRuleConfiguration data) {
+        Collection<YamlConsensusReplicationLogicTableRuleConfiguration> yamlTables = data.getTables().stream()
+                .map(logicTableRuleConfigurationYamlSwapper::swapToYamlConfiguration)
+                .collect(Collectors.toList());
+        YamlConsensusReplicationRuleConfiguration result = new YamlConsensusReplicationRuleConfiguration();
+        result.setTables(yamlTables);
+        return result;
+    }
+    
+    @Override
+    public ConsensusReplicationRuleConfiguration swapToObject(final YamlConsensusReplicationRuleConfiguration yamlConfiguration) {
+        Collection<ConsensusReplicationLogicTableRuleConfiguration> tables = yamlConfiguration.getTables().stream()
+                .map(logicTableRuleConfigurationYamlSwapper::swapToObject)
+                .collect(Collectors.toList());
+        return new ConsensusReplicationRuleConfiguration(tables);
+    }
+    
+    @Override
+    public Class<ConsensusReplicationRuleConfiguration> getTypeClass() {
+        return ConsensusReplicationRuleConfiguration.class;
+    }
+    
+    @Override
+    public String getRuleTagName() {
+        return "CONSENSUS_REPLICATION";
+    }
+    
+    @Override
+    public int getOrder() {
+        return ConsensusReplicationOrder.ORDER;
+    }
+}
diff --git a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.rule.ShardingSphereRuleBuilder b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.rule.ShardingSphereRuleBuilder
similarity index 89%
rename from shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.rule.ShardingSphereRuleBuilder
rename to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.rule.ShardingSphereRuleBuilder
index 7b6ea5b..e497038 100644
--- a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.rule.ShardingSphereRuleBuilder
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.rule.ShardingSphereRuleBuilder
@@ -15,4 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.replica.rule.builder.ReplicaRuleBuilder
+org.apache.shardingsphere.replication.consensus.rule.builder.ConsensusReplicationRuleBuilder
diff --git a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapper b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapper
similarity index 87%
rename from shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapper
rename to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapper
index 783bd55..1eeff93 100644
--- a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapper
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapper
@@ -15,4 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.replica.yaml.swapper.ReplicaRuleConfigurationYamlSwapper
+org.apache.shardingsphere.replication.consensus.yaml.swapper.ConsensusReplicationRuleConfigurationYamlSwapper
diff --git a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/test/java/org/apache/shardingsphere/replica/rule/ReplicaRuleTest.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/test/java/org/apache/shardingsphere/replication/consensus/rule/ConsensusReplicationRuleTest.java
similarity index 54%
rename from shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/test/java/org/apache/shardingsphere/replica/rule/ReplicaRuleTest.java
rename to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/test/java/org/apache/shardingsphere/replication/consensus/rule/ConsensusReplicationRuleTest.java
index be19f3e..9bc654f 100644
--- a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/test/java/org/apache/shardingsphere/replica/rule/ReplicaRuleTest.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/test/java/org/apache/shardingsphere/replication/consensus/rule/ConsensusReplicationRuleTest.java
@@ -15,11 +15,11 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.replica.rule;
+package org.apache.shardingsphere.replication.consensus.rule;
 
-import org.apache.shardingsphere.replica.api.config.ReplicaActualTableRuleConfiguration;
-import org.apache.shardingsphere.replica.api.config.ReplicaLogicTableRuleConfiguration;
-import org.apache.shardingsphere.replica.api.config.ReplicaRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationActualTableRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationLogicTableRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationRuleConfiguration;
 import org.junit.Test;
 
 import java.util.Collection;
@@ -32,7 +32,7 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 
-public final class ReplicaRuleTest {
+public final class ConsensusReplicationRuleTest {
     
     private final String logicTableName = "t_order";
     
@@ -44,31 +44,31 @@ public final class ReplicaRuleTest {
     
     private final String replicaPeers = "127.0.0.1:9090";
     
-    private ReplicaRule createReplicaRule() {
-        ReplicaActualTableRuleConfiguration replicaGroup = new ReplicaActualTableRuleConfiguration(physicsTable, replicaGroupId, replicaPeers, dataSourceName);
-        Collection<ReplicaActualTableRuleConfiguration> replicaGroups = Collections.singleton(replicaGroup);
-        ReplicaLogicTableRuleConfiguration table = new ReplicaLogicTableRuleConfiguration(logicTableName, replicaGroups);
-        ReplicaRuleConfiguration configuration = new ReplicaRuleConfiguration(Collections.singleton(table));
-        return new ReplicaRule(configuration);
-    }
-    
     @Test
     public void assertCannotFindRouting() {
-        ReplicaRule replicaRule = createReplicaRule();
-        Optional<ReplicaTableRule> routingRuleOptional = replicaRule.findRoutingByTable("not_exists_table");
+        ConsensusReplicationRule consensusReplicationRule = createConsensusReplicationRule();
+        Optional<ConsensusReplicationTableRule> routingRuleOptional = consensusReplicationRule.findRoutingByTable("not_exists_table");
         assertFalse(routingRuleOptional.isPresent());
     }
     
     @Test
     public void assertRoutingFound() {
-        ReplicaRule replicaRule = createReplicaRule();
-        Optional<ReplicaTableRule> routingRuleOptional = replicaRule.findRoutingByTable(physicsTable);
+        ConsensusReplicationRule replicaRule = createConsensusReplicationRule();
+        Optional<ConsensusReplicationTableRule> routingRuleOptional = replicaRule.findRoutingByTable(physicsTable);
         assertTrue(routingRuleOptional.isPresent());
-        ReplicaTableRule routingRule = routingRuleOptional.get();
+        ConsensusReplicationTableRule routingRule = routingRuleOptional.get();
         assertNotNull(routingRule);
         assertThat(routingRule.getDataSourceName(), is(dataSourceName));
         assertThat(routingRule.getPhysicsTable(), is(physicsTable));
         assertThat(routingRule.getReplicaGroupId(), is(replicaGroupId));
         assertThat(routingRule.getReplicaPeers(), is(replicaPeers));
     }
+    
+    private ConsensusReplicationRule createConsensusReplicationRule() {
+        ConsensusReplicationActualTableRuleConfiguration replicaGroup = new ConsensusReplicationActualTableRuleConfiguration(physicsTable, replicaGroupId, replicaPeers, dataSourceName);
+        Collection<ConsensusReplicationActualTableRuleConfiguration> replicaGroups = Collections.singleton(replicaGroup);
+        ConsensusReplicationLogicTableRuleConfiguration table = new ConsensusReplicationLogicTableRuleConfiguration(logicTableName, replicaGroups);
+        ConsensusReplicationRuleConfiguration configuration = new ConsensusReplicationRuleConfiguration(Collections.singleton(table));
+        return new ConsensusReplicationRule(configuration);
+    }
 }
diff --git a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/test/java/org/apache/shardingsphere/replica/rule/builder/ReplicaRuleBuilderTest.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/test/java/org/apache/shardingsphere/replication/consensus/rule/builder/ConsensusReplicationRuleBuilderTest.java
similarity index 76%
rename from shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/test/java/org/apache/shardingsphere/replica/rule/builder/ReplicaRuleBuilderTest.java
rename to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/test/java/org/apache/shardingsphere/replication/consensus/rule/builder/ConsensusReplicationRuleBuilderTest.java
index 97c9796..a3b481e 100644
--- a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/test/java/org/apache/shardingsphere/replica/rule/builder/ReplicaRuleBuilderTest.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/test/java/org/apache/shardingsphere/replication/consensus/rule/builder/ConsensusReplicationRuleBuilderTest.java
@@ -15,13 +15,13 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.replica.rule.builder;
+package org.apache.shardingsphere.replication.consensus.rule.builder;
 
 import org.apache.shardingsphere.infra.rule.ShardingSphereRuleBuilder;
 import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
 import org.apache.shardingsphere.infra.spi.order.OrderedSPIRegistry;
-import org.apache.shardingsphere.replica.api.config.ReplicaRuleConfiguration;
-import org.apache.shardingsphere.replica.rule.ReplicaRule;
+import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.rule.ConsensusReplicationRule;
 import org.junit.Test;
 
 import java.util.Collections;
@@ -30,7 +30,7 @@ import static org.hamcrest.CoreMatchers.instanceOf;
 import static org.junit.Assert.assertThat;
 import static org.mockito.Mockito.mock;
 
-public final class ReplicaRuleBuilderTest {
+public final class ConsensusReplicationRuleBuilderTest {
     
     static {
         ShardingSphereServiceLoader.register(ShardingSphereRuleBuilder.class);
@@ -38,8 +38,8 @@ public final class ReplicaRuleBuilderTest {
     
     @Test
     public void assertBuild() {
-        ReplicaRuleConfiguration ruleConfig = mock(ReplicaRuleConfiguration.class);
+        ConsensusReplicationRuleConfiguration ruleConfig = mock(ConsensusReplicationRuleConfiguration.class);
         ShardingSphereRuleBuilder builder = OrderedSPIRegistry.getRegisteredServices(Collections.singletonList(ruleConfig), ShardingSphereRuleBuilder.class).get(ruleConfig);
-        assertThat(builder.build(ruleConfig, Collections.emptyList()), instanceOf(ReplicaRule.class));
+        assertThat(builder.build(ruleConfig, Collections.emptyList()), instanceOf(ConsensusReplicationRule.class));
     }
 }
diff --git a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/test/java/org/apache/shardingsphere/replica/yaml/swapper/ReplicaActualTableRuleConfigurationYamlSwapperTest.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/test/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationActualTableRuleConfigurationYamlSwapperTest.java
similarity index 66%
rename from shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/test/java/org/apache/shardingsphere/replica/yaml/swapper/ReplicaActualTableRuleConfigurationYamlSwapperTest.java
rename to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/test/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationActualTableRuleConfigurationYamlSwapperTest.java
index 66cffd4..a4c33db 100644
--- a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/test/java/org/apache/shardingsphere/replica/yaml/swapper/ReplicaActualTableRuleConfigurationYamlSwapperTest.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/test/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationActualTableRuleConfigurationYamlSwapperTest.java
@@ -15,18 +15,18 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.replica.yaml.swapper;
+package org.apache.shardingsphere.replication.consensus.yaml.swapper;
 
-import org.apache.shardingsphere.replica.api.config.ReplicaActualTableRuleConfiguration;
-import org.apache.shardingsphere.replica.yaml.config.YamlReplicaActualTableRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationActualTableRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.yaml.config.YamlConsensusReplicationActualTableRuleConfiguration;
 import org.junit.Test;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertThat;
 
-public class ReplicaActualTableRuleConfigurationYamlSwapperTest {
+public class ConsensusReplicationActualTableRuleConfigurationYamlSwapperTest {
     
-    private final ReplicaActualTableRuleConfigurationYamlSwapper swapper = new ReplicaActualTableRuleConfigurationYamlSwapper();
+    private final ConsensusReplicationActualTableRuleConfigurationYamlSwapper swapper = new ConsensusReplicationActualTableRuleConfigurationYamlSwapper();
     
     private final String dataSourceName = "demo_ds_0";
     
@@ -38,13 +38,13 @@ public class ReplicaActualTableRuleConfigurationYamlSwapperTest {
     
     @Test(expected = IllegalArgumentException.class)
     public void assertSwapToYamlConfigurationWithMinProperties() {
-        swapper.swapToYamlConfiguration(new ReplicaActualTableRuleConfiguration(null, null, null, null));
+        swapper.swapToYamlConfiguration(new ConsensusReplicationActualTableRuleConfiguration(null, null, null, null));
     }
     
     @Test
     public void assertSwapToYamlConfigurationWithMaxProperties() {
-        YamlReplicaActualTableRuleConfiguration yamlConfiguration = swapper.swapToYamlConfiguration(
-                new ReplicaActualTableRuleConfiguration(physicsTable, replicaGroupId, replicaPeers, dataSourceName));
+        YamlConsensusReplicationActualTableRuleConfiguration yamlConfiguration = swapper.swapToYamlConfiguration(
+                new ConsensusReplicationActualTableRuleConfiguration(physicsTable, replicaGroupId, replicaPeers, dataSourceName));
         assertThat(yamlConfiguration.getDataSourceName(), is(dataSourceName));
         assertThat(yamlConfiguration.getPhysicsTable(), is(physicsTable));
         assertThat(yamlConfiguration.getReplicaGroupId(), is(replicaGroupId));
@@ -53,17 +53,17 @@ public class ReplicaActualTableRuleConfigurationYamlSwapperTest {
     
     @Test(expected = IllegalArgumentException.class)
     public void assertSwapToObjectWithMinProperties() {
-        new ReplicaActualTableRuleConfiguration(null, null, null, null);
+        new ConsensusReplicationActualTableRuleConfiguration(null, null, null, null);
     }
     
     @Test
     public void assertSwapToObjectWithMaxProperties() {
-        YamlReplicaActualTableRuleConfiguration yamlConfiguration = new YamlReplicaActualTableRuleConfiguration();
+        YamlConsensusReplicationActualTableRuleConfiguration yamlConfiguration = new YamlConsensusReplicationActualTableRuleConfiguration();
         yamlConfiguration.setPhysicsTable(physicsTable);
         yamlConfiguration.setReplicaGroupId(replicaGroupId);
         yamlConfiguration.setReplicaPeers(replicaPeers);
         yamlConfiguration.setDataSourceName(dataSourceName);
-        ReplicaActualTableRuleConfiguration configuration = swapper.swapToObject(yamlConfiguration);
+        ConsensusReplicationActualTableRuleConfiguration configuration = swapper.swapToObject(yamlConfiguration);
         assertThat(configuration.getDataSourceName(), is(dataSourceName));
         assertThat(configuration.getPhysicsTable(), is(physicsTable));
         assertThat(configuration.getReplicaGroupId(), is(replicaGroupId));
diff --git a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/test/java/org/apache/shardingsphere/replica/yaml/swapper/ReplicaRuleConfigurationYamlSwapperTest.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/test/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationRuleConfigurationYamlSwapperTest.java
similarity index 50%
rename from shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/test/java/org/apache/shardingsphere/replica/yaml/swapper/ReplicaRuleConfigurationYamlSwapperTest.java
rename to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/test/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationRuleConfigurationYamlSwapperTest.java
index e21495e..2c367e3 100644
--- a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/test/java/org/apache/shardingsphere/replica/yaml/swapper/ReplicaRuleConfigurationYamlSwapperTest.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-common/src/test/java/org/apache/shardingsphere/replication/consensus/yaml/swapper/ConsensusReplicationRuleConfigurationYamlSwapperTest.java
@@ -15,14 +15,14 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.replica.yaml.swapper;
+package org.apache.shardingsphere.replication.consensus.yaml.swapper;
 
-import org.apache.shardingsphere.replica.api.config.ReplicaActualTableRuleConfiguration;
-import org.apache.shardingsphere.replica.api.config.ReplicaLogicTableRuleConfiguration;
-import org.apache.shardingsphere.replica.api.config.ReplicaRuleConfiguration;
-import org.apache.shardingsphere.replica.yaml.config.YamlReplicaActualTableRuleConfiguration;
-import org.apache.shardingsphere.replica.yaml.config.YamlReplicaLogicTableRuleConfiguration;
-import org.apache.shardingsphere.replica.yaml.config.YamlReplicaRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationActualTableRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationLogicTableRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.api.config.ConsensusReplicationRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.yaml.config.YamlConsensusReplicationActualTableRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.yaml.config.YamlConsensusReplicationLogicTableRuleConfiguration;
+import org.apache.shardingsphere.replication.consensus.yaml.config.YamlConsensusReplicationRuleConfiguration;
 import org.junit.Test;
 
 import java.util.Collection;
@@ -33,9 +33,9 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 
-public final class ReplicaRuleConfigurationYamlSwapperTest {
+public final class ConsensusReplicationRuleConfigurationYamlSwapperTest {
     
-    private final ReplicaRuleConfigurationYamlSwapper swapper = new ReplicaRuleConfigurationYamlSwapper();
+    private final ConsensusReplicationRuleConfigurationYamlSwapper swapper = new ConsensusReplicationRuleConfigurationYamlSwapper();
     
     private final String logicTableName = "t_order";
     
@@ -49,29 +49,29 @@ public final class ReplicaRuleConfigurationYamlSwapperTest {
     
     @Test
     public void assertSwapToYamlConfigurationWithMinProperties() {
-        YamlReplicaRuleConfiguration yamlConfiguration = swapper.swapToYamlConfiguration(new ReplicaRuleConfiguration(
-                Collections.singleton(new ReplicaLogicTableRuleConfiguration(logicTableName, null))));
+        YamlConsensusReplicationRuleConfiguration yamlConfiguration = swapper.swapToYamlConfiguration(new ConsensusReplicationRuleConfiguration(
+                Collections.singleton(new ConsensusReplicationLogicTableRuleConfiguration(logicTableName, null))));
         assertNotNull(yamlConfiguration);
         assertNotNull(yamlConfiguration.getTables());
         assertThat(yamlConfiguration.getTables().size(), is(1));
-        Collection<YamlReplicaActualTableRuleConfiguration> resultReplicaGroups = yamlConfiguration.getTables().iterator().next().getReplicaGroups();
+        Collection<YamlConsensusReplicationActualTableRuleConfiguration> resultReplicaGroups = yamlConfiguration.getTables().iterator().next().getReplicaGroups();
         assertNotNull(resultReplicaGroups);
         assertTrue(resultReplicaGroups.isEmpty());
     }
     
     @Test
     public void assertSwapToYamlConfigurationWithMaxProperties() {
-        ReplicaActualTableRuleConfiguration replicaGroup = new ReplicaActualTableRuleConfiguration(physicsTable, replicaGroupId, replicaPeers, dataSourceName);
-        Collection<ReplicaActualTableRuleConfiguration> replicaGroups = Collections.singleton(replicaGroup);
-        ReplicaLogicTableRuleConfiguration table = new ReplicaLogicTableRuleConfiguration(logicTableName, replicaGroups);
-        YamlReplicaRuleConfiguration yamlConfiguration = swapper.swapToYamlConfiguration(new ReplicaRuleConfiguration(Collections.singleton(table)));
+        ConsensusReplicationActualTableRuleConfiguration replicaGroup = new ConsensusReplicationActualTableRuleConfiguration(physicsTable, replicaGroupId, replicaPeers, dataSourceName);
+        Collection<ConsensusReplicationActualTableRuleConfiguration> replicaGroups = Collections.singleton(replicaGroup);
+        ConsensusReplicationLogicTableRuleConfiguration table = new ConsensusReplicationLogicTableRuleConfiguration(logicTableName, replicaGroups);
+        YamlConsensusReplicationRuleConfiguration yamlConfiguration = swapper.swapToYamlConfiguration(new ConsensusReplicationRuleConfiguration(Collections.singleton(table)));
         assertNotNull(yamlConfiguration);
         assertNotNull(yamlConfiguration.getTables());
         assertThat(yamlConfiguration.getTables().size(), is(1));
-        Collection<YamlReplicaActualTableRuleConfiguration> resultReplicaGroups = yamlConfiguration.getTables().iterator().next().getReplicaGroups();
+        Collection<YamlConsensusReplicationActualTableRuleConfiguration> resultReplicaGroups = yamlConfiguration.getTables().iterator().next().getReplicaGroups();
         assertNotNull(resultReplicaGroups);
         assertThat(resultReplicaGroups.size(), is(1));
-        YamlReplicaActualTableRuleConfiguration resultReplicaGroup = resultReplicaGroups.iterator().next();
+        YamlConsensusReplicationActualTableRuleConfiguration resultReplicaGroup = resultReplicaGroups.iterator().next();
         assertThat(resultReplicaGroup.getDataSourceName(), is(dataSourceName));
         assertThat(resultReplicaGroup.getPhysicsTable(), is(physicsTable));
         assertThat(resultReplicaGroup.getReplicaGroupId(), is(replicaGroupId));
@@ -80,40 +80,40 @@ public final class ReplicaRuleConfigurationYamlSwapperTest {
     
     @Test
     public void assertSwapToObjectWithMinProperties() {
-        YamlReplicaLogicTableRuleConfiguration yamlLogicTable = new YamlReplicaLogicTableRuleConfiguration();
+        YamlConsensusReplicationLogicTableRuleConfiguration yamlLogicTable = new YamlConsensusReplicationLogicTableRuleConfiguration();
         yamlLogicTable.setLogicTable(logicTableName);
-        YamlReplicaRuleConfiguration yamlConfiguration = new YamlReplicaRuleConfiguration();
+        YamlConsensusReplicationRuleConfiguration yamlConfiguration = new YamlConsensusReplicationRuleConfiguration();
         yamlConfiguration.setTables(Collections.singleton(yamlLogicTable));
-        ReplicaRuleConfiguration configuration = swapper.swapToObject(yamlConfiguration);
+        ConsensusReplicationRuleConfiguration configuration = swapper.swapToObject(yamlConfiguration);
         assertNotNull(configuration);
         assertNotNull(configuration.getTables());
         assertThat(configuration.getTables().size(), is(1));
-        Collection<ReplicaActualTableRuleConfiguration> resultReplicaGroups = configuration.getTables().iterator().next().getReplicaGroups();
+        Collection<ConsensusReplicationActualTableRuleConfiguration> resultReplicaGroups = configuration.getTables().iterator().next().getReplicaGroups();
         assertNotNull(resultReplicaGroups);
         assertTrue(resultReplicaGroups.isEmpty());
     }
     
     @Test
     public void assertSwapToObjectWithMaxProperties() {
-        YamlReplicaActualTableRuleConfiguration replicaGroup = new YamlReplicaActualTableRuleConfiguration();
+        YamlConsensusReplicationActualTableRuleConfiguration replicaGroup = new YamlConsensusReplicationActualTableRuleConfiguration();
         replicaGroup.setPhysicsTable(physicsTable);
         replicaGroup.setReplicaGroupId(replicaGroupId);
         replicaGroup.setReplicaPeers(replicaPeers);
         replicaGroup.setDataSourceName(dataSourceName);
-        Collection<YamlReplicaActualTableRuleConfiguration> replicaGroups = Collections.singleton(replicaGroup);
-        YamlReplicaLogicTableRuleConfiguration table = new YamlReplicaLogicTableRuleConfiguration();
+        Collection<YamlConsensusReplicationActualTableRuleConfiguration> replicaGroups = Collections.singleton(replicaGroup);
+        YamlConsensusReplicationLogicTableRuleConfiguration table = new YamlConsensusReplicationLogicTableRuleConfiguration();
         table.setLogicTable(logicTableName);
         table.setReplicaGroups(replicaGroups);
-        YamlReplicaRuleConfiguration yamlConfiguration = new YamlReplicaRuleConfiguration();
+        YamlConsensusReplicationRuleConfiguration yamlConfiguration = new YamlConsensusReplicationRuleConfiguration();
         yamlConfiguration.setTables(Collections.singleton(table));
-        ReplicaRuleConfiguration configuration = swapper.swapToObject(yamlConfiguration);
+        ConsensusReplicationRuleConfiguration configuration = swapper.swapToObject(yamlConfiguration);
         assertNotNull(configuration);
         assertNotNull(configuration.getTables());
         assertThat(configuration.getTables().size(), is(1));
-        Collection<ReplicaActualTableRuleConfiguration> resultReplicaGroups = configuration.getTables().iterator().next().getReplicaGroups();
+        Collection<ConsensusReplicationActualTableRuleConfiguration> resultReplicaGroups = configuration.getTables().iterator().next().getReplicaGroups();
         assertNotNull(resultReplicaGroups);
         assertThat(resultReplicaGroups.size(), is(1));
-        ReplicaActualTableRuleConfiguration resultReplicaGroup = resultReplicaGroups.iterator().next();
+        ConsensusReplicationActualTableRuleConfiguration resultReplicaGroup = resultReplicaGroups.iterator().next();
         assertThat(resultReplicaGroup.getDataSourceName(), is(dataSourceName));
         assertThat(resultReplicaGroup.getPhysicsTable(), is(physicsTable));
         assertThat(resultReplicaGroup.getReplicaGroupId(), is(replicaGroupId));
diff --git a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-execute/pom.xml b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-executor/pom.xml
similarity index 85%
rename from shardingsphere-features/shardingsphere-replica/shardingsphere-replica-execute/pom.xml
rename to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-executor/pom.xml
index 5c38ad8..fb053ba 100644
--- a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-execute/pom.xml
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-executor/pom.xml
@@ -22,21 +22,21 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.shardingsphere</groupId>
-        <artifactId>shardingsphere-replica</artifactId>
+        <artifactId>shardingsphere-consensus-replication</artifactId>
         <version>5.0.0-RC1-SNAPSHOT</version>
     </parent>
-    <artifactId>shardingsphere-replica-execute</artifactId>
+    <artifactId>shardingsphere-consensus-replication-executor</artifactId>
     <name>${project.artifactId}</name>
     
     <dependencies>
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
-            <artifactId>shardingsphere-replica-common</artifactId>
+            <artifactId>shardingsphere-consensus-replication-common</artifactId>
             <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
-            <artifactId>shardingsphere-replica-route</artifactId>
+            <artifactId>shardingsphere-consensus-replication-route</artifactId>
             <version>${project.version}</version>
         </dependency>
         <dependency>
diff --git a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-execute/src/main/java/org/apache/shardingsphere/replica/execute/callback/ReplicaExecutorCallback.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-executor/src/main/java/org/apache/shardingsphere/replication/consensus/execute/callback/ConsensusReplicationExecutorCallback.java
similarity index 88%
rename from shardingsphere-features/shardingsphere-replica/shardingsphere-replica-execute/src/main/java/org/apache/shardingsphere/replica/execute/callback/ReplicaExecutorCallback.java
rename to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-executor/src/main/java/org/apache/shardingsphere/replication/consensus/execute/callback/ConsensusReplicationExecutorCallback.java
index e92254c..73177a7 100644
--- a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-execute/src/main/java/org/apache/shardingsphere/replica/execute/callback/ReplicaExecutorCallback.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-executor/src/main/java/org/apache/shardingsphere/replication/consensus/execute/callback/ConsensusReplicationExecutorCallback.java
@@ -15,19 +15,19 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.replica.execute.callback;
+package org.apache.shardingsphere.replication.consensus.execute.callback;
 
 import java.sql.SQLException;
 import java.util.Collection;
 import java.util.Map;
 
 /**
- * Replica executor callback.
+ * Consensus replication executor callback.
  *
  * @param <I> type of input value
  * @param <O> type of output value
  */
-public interface ReplicaExecutorCallback<I, O> {
+public interface ConsensusReplicationExecutorCallback<I, O> {
     
     /**
      * Execute.
diff --git a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-execute/src/main/java/org/apache/shardingsphere/replica/execute/callback/DefaultReplicaExecutorCallback.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-executor/src/main/java/org/apache/shardingsphere/replication/consensus/execute/callback/DefaultConsensusReplicationExecutorCallback.java
similarity index 77%
rename from shardingsphere-features/shardingsphere-replica/shardingsphere-replica-execute/src/main/java/org/apache/shardingsphere/replica/execute/callback/DefaultReplicaExecutorCallback.java
rename to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-executor/src/main/java/org/apache/shardingsphere/replication/consensus/execute/callback/DefaultConsensusReplicationExecutorCallback.java
index c1be3fd..e1a0cbe 100644
--- a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-execute/src/main/java/org/apache/shardingsphere/replica/execute/callback/DefaultReplicaExecutorCallback.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-executor/src/main/java/org/apache/shardingsphere/replication/consensus/execute/callback/DefaultConsensusReplicationExecutorCallback.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.replica.execute.callback;
+package org.apache.shardingsphere.replication.consensus.execute.callback;
 
 import lombok.extern.slf4j.Slf4j;
 import org.apache.shardingsphere.infra.exception.ShardingSphereException;
@@ -29,19 +29,19 @@ import java.util.Collection;
 import java.util.Map;
 
 /**
- * Default replica executor callback.
+ * Default consensus replication executor callback.
  */
 @Slf4j
-public final class DefaultReplicaExecutorCallback implements RawExecutorCallback<RawSQLExecuteUnit, ExecuteResult> {
+public final class DefaultConsensusReplicationExecutorCallback implements RawExecutorCallback<RawSQLExecuteUnit, ExecuteResult> {
     
     static {
-        ShardingSphereServiceLoader.register(ReplicaExecutorCallback.class);
+        ShardingSphereServiceLoader.register(ConsensusReplicationExecutorCallback.class);
     }
     
-    private final Collection<ReplicaExecutorCallback> replicaExecutorCallbacks;
+    private final Collection<ConsensusReplicationExecutorCallback> replicaExecutorCallbacks;
     
-    public DefaultReplicaExecutorCallback() {
-        replicaExecutorCallbacks = ShardingSphereServiceLoader.newServiceInstances(ReplicaExecutorCallback.class);
+    public DefaultConsensusReplicationExecutorCallback() {
+        replicaExecutorCallbacks = ShardingSphereServiceLoader.newServiceInstances(ConsensusReplicationExecutorCallback.class);
         if (null == replicaExecutorCallbacks || replicaExecutorCallbacks.isEmpty()) {
             throw new ShardingSphereException("not found replica executor callback impl");
         }
diff --git a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-execute/src/main/java/org/apache/shardingsphere/replica/execute/group/ReplicaExecuteGroupDecorator.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-executor/src/main/java/org/apache/shardingsphere/replication/consensus/execute/group/ConsensusReplicationExecuteGroupDecorator.java
similarity index 70%
rename from shardingsphere-features/shardingsphere-replica/shardingsphere-replica-execute/src/main/java/org/apache/shardingsphere/replica/execute/group/ReplicaExecuteGroupDecorator.java
rename to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-executor/src/main/java/org/apache/shardingsphere/replication/consensus/execute/group/ConsensusReplicationExecuteGroupDecorator.java
index 79ca868..5c39e14 100644
--- a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-execute/src/main/java/org/apache/shardingsphere/replica/execute/group/ReplicaExecuteGroupDecorator.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-executor/src/main/java/org/apache/shardingsphere/replication/consensus/execute/group/ConsensusReplicationExecuteGroupDecorator.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.replica.execute.group;
+package org.apache.shardingsphere.replication.consensus.execute.group;
 
 import lombok.extern.slf4j.Slf4j;
 import org.apache.shardingsphere.infra.exception.ShardingSphereException;
@@ -26,20 +26,20 @@ import org.apache.shardingsphere.infra.executor.sql.raw.RawSQLExecuteUnit;
 import org.apache.shardingsphere.infra.executor.sql.raw.group.RawExecuteGroupDecorator;
 import org.apache.shardingsphere.infra.route.context.RouteContext;
 import org.apache.shardingsphere.infra.route.context.RouteStageContext;
-import org.apache.shardingsphere.replica.constant.ReplicaOrder;
-import org.apache.shardingsphere.replica.route.engine.ReplicaGroup;
-import org.apache.shardingsphere.replica.route.engine.ReplicaRouteStageContext;
-import org.apache.shardingsphere.replica.rule.ReplicaRule;
+import org.apache.shardingsphere.replication.consensus.constant.ConsensusReplicationOrder;
+import org.apache.shardingsphere.replication.consensus.route.engine.ConsensusReplicationGroup;
+import org.apache.shardingsphere.replication.consensus.route.engine.ConsensusReplicationRouteStageContext;
+import org.apache.shardingsphere.replication.consensus.rule.ConsensusReplicationRule;
 
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
 /**
- * Execute group decorator for replica.
+ * Execute group decorator for consensus replication.
  */
 @Slf4j
-public final class ReplicaExecuteGroupDecorator implements RawExecuteGroupDecorator<RawSQLExecuteUnit, ReplicaRule> {
+public final class ConsensusReplicationExecuteGroupDecorator implements RawExecuteGroupDecorator<RawSQLExecuteUnit, ConsensusReplicationRule> {
     
     /**
      * TODO FIXED ME when the proxy is capable of handling tableless operation commands, it can be removed.
@@ -47,7 +47,7 @@ public final class ReplicaExecuteGroupDecorator implements RawExecuteGroupDecora
     private final boolean supportWithoutTableCommand = true;
     
     @Override
-    public Collection<InputGroup<RawSQLExecuteUnit>> decorate(final RouteContext routeContext, final ReplicaRule rule, final Collection<InputGroup<RawSQLExecuteUnit>> inputGroups) {
+    public Collection<InputGroup<RawSQLExecuteUnit>> decorate(final RouteContext routeContext, final ConsensusReplicationRule rule, final Collection<InputGroup<RawSQLExecuteUnit>> inputGroups) {
         if (!inputGroups.isEmpty()) {
             if (!(inputGroups.iterator().next().getInputs().get(0) instanceof RawSQLExecuteUnit)) {
                 log.debug("inputGroups ExecuteUnit is not RawSQLExecuteUnit, ignore decorate");
@@ -55,15 +55,15 @@ public final class ReplicaExecuteGroupDecorator implements RawExecuteGroupDecora
             }
         }
         RouteStageContext routeStageContext = routeContext.getRouteStageContext(getTypeClass());
-        ReplicaRouteStageContext replicaRouteStageContext = (ReplicaRouteStageContext) routeStageContext;
-        Map<String, ReplicaGroup> replicaGroups = replicaRouteStageContext.getReplicaGroups();
+        ConsensusReplicationRouteStageContext replicaRouteStageContext = (ConsensusReplicationRouteStageContext) routeStageContext;
+        Map<String, ConsensusReplicationGroup> replicaGroups = replicaRouteStageContext.getReplicaGroups();
         for (InputGroup<RawSQLExecuteUnit> each : inputGroups) {
             routeReplicaGroup(each, replicaRouteStageContext.getSchemaName(), replicaGroups, replicaRouteStageContext.isReadOnly());
         }
         return inputGroups;
     }
     
-    private void routeReplicaGroup(final InputGroup<RawSQLExecuteUnit> inputGroup, final String schemaName, final Map<String, ReplicaGroup> replicaGroups, final boolean readOnly) {
+    private void routeReplicaGroup(final InputGroup<RawSQLExecuteUnit> inputGroup, final String schemaName, final Map<String, ConsensusReplicationGroup> replicaGroups, final boolean readOnly) {
         for (RawSQLExecuteUnit each : inputGroup.getInputs()) {
             ExecutionUnit executionUnit = each.getExecutionUnit();
             SQLRuntimeContext sqlRuntimeContext = executionUnit.getSqlUnit().getSqlRuntimeContext();
@@ -71,15 +71,15 @@ public final class ReplicaExecuteGroupDecorator implements RawExecuteGroupDecora
             if ((null == actualTables || actualTables.isEmpty()) && !supportWithoutTableCommand) {
                 throw new ShardingSphereException("route fail: actual tables is empty");
             }
-            ReplicaGroup replicaGroup = getReplicaGroup(actualTables, replicaGroups);
+            ConsensusReplicationGroup replicaGroup = getReplicaGroup(actualTables, replicaGroups);
             each.setRawGroup(replicaGroup);
             sqlRuntimeContext.setSchemaName(schemaName);
             sqlRuntimeContext.setReadOnly(readOnly);
         }
     }
     
-    private ReplicaGroup getReplicaGroup(final List<String> actualTables, final Map<String, ReplicaGroup> replicaGroups) {
-        ReplicaGroup replicaGroup = null;
+    private ConsensusReplicationGroup getReplicaGroup(final List<String> actualTables, final Map<String, ConsensusReplicationGroup> replicaGroups) {
+        ConsensusReplicationGroup replicaGroup = null;
         if (null != actualTables && !actualTables.isEmpty()) {
             for (String each : actualTables) {
                 replicaGroup = replicaGroups.get(each);
@@ -100,11 +100,11 @@ public final class ReplicaExecuteGroupDecorator implements RawExecuteGroupDecora
     
     @Override
     public int getOrder() {
-        return ReplicaOrder.ORDER;
+        return ConsensusReplicationOrder.ORDER;
     }
     
     @Override
-    public Class<ReplicaRule> getTypeClass() {
-        return ReplicaRule.class;
+    public Class<ConsensusReplicationRule> getTypeClass() {
+        return ConsensusReplicationRule.class;
     }
 }
diff --git a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-execute/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.executor.sql.group.ExecuteGroupDecorator b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-executor/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.executor.sql.group.ExecuteGroupDecorator
similarity index 88%
rename from shardingsphere-features/shardingsphere-replica/shardingsphere-replica-execute/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.executor.sql.group.ExecuteGroupDecorator
rename to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-executor/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.executor.sql.group.ExecuteGroupDecorator
index 609aae0..1f8de1d 100644
--- a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-execute/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.executor.sql.group.ExecuteGroupDecorator
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-executor/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.executor.sql.group.ExecuteGroupDecorator
@@ -15,4 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.replica.execute.group.ReplicaExecuteGroupDecorator
+org.apache.shardingsphere.replication.consensus.execute.group.ConsensusReplicationExecuteGroupDecorator
diff --git a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-execute/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.executor.sql.raw.execute.callback.RawExecutorCallback b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-executor/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.executor.sql.raw.execute.callback.RawExecutorCallback
similarity index 87%
rename from shardingsphere-features/shardingsphere-replica/shardingsphere-replica-execute/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.executor.sql.raw.execute.callback.RawExecutorCallback
rename to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-executor/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.executor.sql.raw.execute.callback.RawExecutorCallback
index 32fa8f4..8695694 100644
--- a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-execute/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.executor.sql.raw.execute.callback.RawExecutorCallback
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-executor/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.executor.sql.raw.execute.callback.RawExecutorCallback
@@ -15,4 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.replica.execute.callback.DefaultReplicaExecutorCallback
+org.apache.shardingsphere.replication.consensus.execute.callback.DefaultConsensusReplicationExecutorCallback
diff --git a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-route/pom.xml b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-route/pom.xml
similarity index 88%
rename from shardingsphere-features/shardingsphere-replica/shardingsphere-replica-route/pom.xml
rename to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-route/pom.xml
index d2de19d..d7c7112 100644
--- a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-route/pom.xml
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-route/pom.xml
@@ -22,10 +22,10 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.shardingsphere</groupId>
-        <artifactId>shardingsphere-replica</artifactId>
+        <artifactId>shardingsphere-consensus-replication</artifactId>
         <version>5.0.0-RC1-SNAPSHOT</version>
     </parent>
-    <artifactId>shardingsphere-replica-route</artifactId>
+    <artifactId>shardingsphere-consensus-replication-route</artifactId>
     <name>${project.artifactId}</name>
     
     <dependencies>
@@ -36,7 +36,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
-            <artifactId>shardingsphere-replica-common</artifactId>
+            <artifactId>shardingsphere-consensus-replication-common</artifactId>
             <version>${project.version}</version>
         </dependency>
     </dependencies>
diff --git a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-route/src/main/java/org/apache/shardingsphere/replica/route/engine/ReplicaGroup.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-route/src/main/java/org/apache/shardingsphere/replication/consensus/route/engine/ConsensusReplicationGroup.java
similarity index 82%
rename from shardingsphere-features/shardingsphere-replica/shardingsphere-replica-route/src/main/java/org/apache/shardingsphere/replica/route/engine/ReplicaGroup.java
rename to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-route/src/main/java/org/apache/shardingsphere/replication/consensus/route/engine/ConsensusReplicationGroup.java
index 5309022..72611e7 100644
--- a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-route/src/main/java/org/apache/shardingsphere/replica/route/engine/ReplicaGroup.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-route/src/main/java/org/apache/shardingsphere/replication/consensus/route/engine/ConsensusReplicationGroup.java
@@ -15,20 +15,20 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.replica.route.engine;
+package org.apache.shardingsphere.replication.consensus.route.engine;
 
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 import org.apache.shardingsphere.infra.route.context.RawGroup;
 
 /**
- * Replica group.
+ * Consensus replication group.
  */
 @AllArgsConstructor
 @Getter
-public final class ReplicaGroup implements RawGroup {
+public final class ConsensusReplicationGroup implements RawGroup {
     
-    public static final String BLANK_REPLICA_GROUP_KEY = "Nil";
+    public static final String BLANK_CONSENSUS_REPLICATION_GROUP_KEY = "Nil";
     
     private final String physicsTable;
     
diff --git a/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-route/src/main/java/org/apache/shardingsphere/replication/consensus/route/engine/ConsensusReplicationRouteDecorator.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-route/src/main/java/org/apache/shardingsphere/replication/consensus/route/engine/ConsensusReplicationRouteDecorator.java
new file mode 100644
index 0000000..336d7f5
--- /dev/null
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-route/src/main/java/org/apache/shardingsphere/replication/consensus/route/engine/ConsensusReplicationRouteDecorator.java
@@ -0,0 +1,96 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.replication.consensus.route.engine;
+
+import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
+import org.apache.shardingsphere.infra.route.context.RouteContext;
+import org.apache.shardingsphere.infra.route.context.RouteMapper;
+import org.apache.shardingsphere.infra.route.context.RouteUnit;
+import org.apache.shardingsphere.infra.route.decorator.RouteDecorator;
+import org.apache.shardingsphere.replication.consensus.constant.ConsensusReplicationOrder;
+import org.apache.shardingsphere.replication.consensus.rule.ConsensusReplicationRule;
+import org.apache.shardingsphere.replication.consensus.rule.ConsensusReplicationTableRule;
+import org.apache.shardingsphere.sql.parser.binder.statement.SQLStatementContext;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+
+/**
+ * Route decorator for consensus replication.
+ */
+public final class ConsensusReplicationRouteDecorator implements RouteDecorator<ConsensusReplicationRule> {
+    
+    @Override
+    public RouteContext decorate(final RouteContext routeContext, final ShardingSphereMetaData metaData, final ConsensusReplicationRule consensusReplicationRule, final ConfigurationProperties props) {
+        Map<String, ConsensusReplicationGroup> replicaGroups = new HashMap<>();
+        String schemaName = metaData.getSchemaName();
+        SQLStatementContext<?> sqlStatementContext = routeContext.getSqlStatementContext();
+        if (routeContext.getRouteResult().getRouteUnits().isEmpty()) {
+            ConsensusReplicationTableRule replicaRoutingRule = consensusReplicationRule.getReplicaTableRules().iterator().next();
+            ConsensusReplicationGroup replicaGroup = new ConsensusReplicationGroup(replicaRoutingRule.getPhysicsTable(), replicaRoutingRule.getReplicaGroupId(), replicaRoutingRule.getReplicaPeers(),
+                    replicaRoutingRule.getDataSourceName());
+            replicaGroups.put(ConsensusReplicationGroup.BLANK_CONSENSUS_REPLICATION_GROUP_KEY, replicaGroup);
+            return new RouteContext(
+                    routeContext, routeContext.getRouteResult(), new ConsensusReplicationRouteStageContext(schemaName, replicaGroups, sqlStatementContext.isReadOnly()), getTypeClass());
+        }
+        for (RouteUnit each : routeContext.getRouteResult().getRouteUnits()) {
+            Collection<RouteMapper> routeMappers = each.getTableMappers();
+            if (null == routeMappers || routeMappers.isEmpty()) {
+                ConsensusReplicationTableRule tableRule = consensusReplicationRule.getReplicaTableRules().iterator().next();
+                ConsensusReplicationGroup replicaGroup = new ConsensusReplicationGroup(
+                        tableRule.getPhysicsTable(), tableRule.getReplicaGroupId(), tableRule.getReplicaPeers(), tableRule.getDataSourceName());
+                replicaGroups.put(ConsensusReplicationGroup.BLANK_CONSENSUS_REPLICATION_GROUP_KEY, replicaGroup);
+            } else {
+                routeReplicaGroups(routeMappers, consensusReplicationRule, replicaGroups);
+            }
+        }
+        return new RouteContext(routeContext, routeContext.getRouteResult(), new ConsensusReplicationRouteStageContext(schemaName, replicaGroups, sqlStatementContext.isReadOnly()), getTypeClass());
+    }
+    
+    private void routeReplicaGroups(final Collection<RouteMapper> routeMappers, final ConsensusReplicationRule replicaRule, final Map<String, ConsensusReplicationGroup> replicaGroups) {
+        for (RouteMapper each : routeMappers) {
+            String actualTableName = each.getActualName();
+            Optional<ConsensusReplicationTableRule> replicaRoutingRuleOptional = replicaRule.findRoutingByTable(actualTableName);
+            ConsensusReplicationGroup replicaGroup;
+            if (replicaRoutingRuleOptional.isPresent()) {
+                ConsensusReplicationTableRule replicaRoutingRule = replicaRoutingRuleOptional.get();
+                replicaGroup = new ConsensusReplicationGroup(replicaRoutingRule.getPhysicsTable(), replicaRoutingRule.getReplicaGroupId(), replicaRoutingRule.getReplicaPeers(),
+                        replicaRoutingRule.getDataSourceName());
+                replicaGroups.put(actualTableName, replicaGroup);
+            } else {
+                ConsensusReplicationTableRule replicaRoutingRule = replicaRule.getReplicaTableRules().iterator().next();
+                replicaGroup = new ConsensusReplicationGroup(replicaRoutingRule.getPhysicsTable(), replicaRoutingRule.getReplicaGroupId(), replicaRoutingRule.getReplicaPeers(),
+                        replicaRoutingRule.getDataSourceName());
+            }
+            replicaGroups.put(actualTableName, replicaGroup);
+        }
+    }
+    
+    @Override
+    public int getOrder() {
+        return ConsensusReplicationOrder.ORDER;
+    }
+    
+    @Override
+    public Class<ConsensusReplicationRule> getTypeClass() {
+        return ConsensusReplicationRule.class;
+    }
+}
diff --git a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-route/src/main/java/org/apache/shardingsphere/replica/route/engine/ReplicaRouteStageContext.java b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-route/src/main/java/org/apache/shardingsphere/replication/consensus/route/engine/ConsensusReplicationRouteStageContext.java
similarity index 79%
rename from shardingsphere-features/shardingsphere-replica/shardingsphere-replica-route/src/main/java/org/apache/shardingsphere/replica/route/engine/ReplicaRouteStageContext.java
rename to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-route/src/main/java/org/apache/shardingsphere/replication/consensus/route/engine/ConsensusReplicationRouteStageContext.java
index 1715c66..3317b96 100644
--- a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-route/src/main/java/org/apache/shardingsphere/replica/route/engine/ReplicaRouteStageContext.java
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-route/src/main/java/org/apache/shardingsphere/replication/consensus/route/engine/ConsensusReplicationRouteStageContext.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.replica.route.engine;
+package org.apache.shardingsphere.replication.consensus.route.engine;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
@@ -24,15 +24,15 @@ import org.apache.shardingsphere.infra.route.context.RouteStageContext;
 import java.util.Map;
 
 /**
- * Replica route stage context.
+ * Consensus replication route stage context.
  */
 @RequiredArgsConstructor
 @Getter
-public final class ReplicaRouteStageContext implements RouteStageContext {
+public final class ConsensusReplicationRouteStageContext implements RouteStageContext {
     
     private final String schemaName;
     
-    private final Map<String, ReplicaGroup> replicaGroups;
+    private final Map<String, ConsensusReplicationGroup> replicaGroups;
     
     private final boolean readOnly;
 }
diff --git a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-route/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.route.decorator.RouteDecorator b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-route/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.route.decorator.RouteDecorator
similarity index 89%
rename from shardingsphere-features/shardingsphere-replica/shardingsphere-replica-route/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.route.decorator.RouteDecorator
rename to shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-route/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.route.decorator.RouteDecorator
index c66a60b..2f5b459 100644
--- a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-route/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.route.decorator.RouteDecorator
+++ b/shardingsphere-features/shardingsphere-consensus-replication/shardingsphere-consensus-replication-route/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.route.decorator.RouteDecorator
@@ -15,4 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.replica.route.engine.ReplicaRouteDecorator
+org.apache.shardingsphere.replication.consensus.route.engine.ConsensusReplicationRouteDecorator
diff --git a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/java/org/apache/shardingsphere/replica/yaml/swapper/ReplicaLogicTableRuleConfigurationYamlSwapper.java b/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/java/org/apache/shardingsphere/replica/yaml/swapper/ReplicaLogicTableRuleConfigurationYamlSwapper.java
deleted file mode 100644
index 71bd7a0..0000000
--- a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/java/org/apache/shardingsphere/replica/yaml/swapper/ReplicaLogicTableRuleConfigurationYamlSwapper.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.replica.yaml.swapper;
-
-import org.apache.shardingsphere.infra.yaml.swapper.YamlSwapper;
-import org.apache.shardingsphere.replica.api.config.ReplicaActualTableRuleConfiguration;
-import org.apache.shardingsphere.replica.api.config.ReplicaLogicTableRuleConfiguration;
-import org.apache.shardingsphere.replica.yaml.config.YamlReplicaActualTableRuleConfiguration;
-import org.apache.shardingsphere.replica.yaml.config.YamlReplicaLogicTableRuleConfiguration;
-
-import java.util.Collection;
-import java.util.stream.Collectors;
-
-/**
- * Replica logic table rule configuration YAML swapper.
- */
-public final class ReplicaLogicTableRuleConfigurationYamlSwapper implements YamlSwapper<YamlReplicaLogicTableRuleConfiguration, ReplicaLogicTableRuleConfiguration> {
-    
-    private final ReplicaActualTableRuleConfigurationYamlSwapper actualTableRuleConfigurationYamlSwapper = new ReplicaActualTableRuleConfigurationYamlSwapper();
-    
-    @Override
-    public YamlReplicaLogicTableRuleConfiguration swapToYamlConfiguration(final ReplicaLogicTableRuleConfiguration data) {
-        Collection<YamlReplicaActualTableRuleConfiguration> replicaGroups = data.getReplicaGroups().stream()
-                .map(actualTableRuleConfigurationYamlSwapper::swapToYamlConfiguration)
-                .collect(Collectors.toList());
-        YamlReplicaLogicTableRuleConfiguration result = new YamlReplicaLogicTableRuleConfiguration();
-        result.setLogicTable(data.getLogicTable());
-        result.setReplicaGroups(replicaGroups);
-        return result;
-    }
-    
-    @Override
-    public ReplicaLogicTableRuleConfiguration swapToObject(final YamlReplicaLogicTableRuleConfiguration yamlConfiguration) {
-        Collection<ReplicaActualTableRuleConfiguration> replicaGroups = yamlConfiguration.getReplicaGroups().stream()
-                .map(actualTableRuleConfigurationYamlSwapper::swapToObject)
-                .collect(Collectors.toList());
-        return new ReplicaLogicTableRuleConfiguration(yamlConfiguration.getLogicTable(), replicaGroups);
-    }
-}
diff --git a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/java/org/apache/shardingsphere/replica/yaml/swapper/ReplicaRuleConfigurationYamlSwapper.java b/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/java/org/apache/shardingsphere/replica/yaml/swapper/ReplicaRuleConfigurationYamlSwapper.java
deleted file mode 100644
index 18fa86b..0000000
--- a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-common/src/main/java/org/apache/shardingsphere/replica/yaml/swapper/ReplicaRuleConfigurationYamlSwapper.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.replica.yaml.swapper;
-
-import org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapper;
-import org.apache.shardingsphere.replica.api.config.ReplicaLogicTableRuleConfiguration;
-import org.apache.shardingsphere.replica.api.config.ReplicaRuleConfiguration;
-import org.apache.shardingsphere.replica.constant.ReplicaOrder;
-import org.apache.shardingsphere.replica.yaml.config.YamlReplicaLogicTableRuleConfiguration;
-import org.apache.shardingsphere.replica.yaml.config.YamlReplicaRuleConfiguration;
-
-import java.util.Collection;
-import java.util.stream.Collectors;
-
-/**
- * Replica rule configuration YAML swapper.
- */
-public final class ReplicaRuleConfigurationYamlSwapper implements YamlRuleConfigurationSwapper<YamlReplicaRuleConfiguration, ReplicaRuleConfiguration> {
-    
-    private final ReplicaLogicTableRuleConfigurationYamlSwapper logicTableRuleConfigurationYamlSwapper = new ReplicaLogicTableRuleConfigurationYamlSwapper();
-    
-    @Override
-    public YamlReplicaRuleConfiguration swapToYamlConfiguration(final ReplicaRuleConfiguration data) {
-        Collection<YamlReplicaLogicTableRuleConfiguration> yamlTables = data.getTables().stream()
-                .map(logicTableRuleConfigurationYamlSwapper::swapToYamlConfiguration)
-                .collect(Collectors.toList());
-        YamlReplicaRuleConfiguration result = new YamlReplicaRuleConfiguration();
-        result.setTables(yamlTables);
-        return result;
-    }
-    
-    @Override
-    public ReplicaRuleConfiguration swapToObject(final YamlReplicaRuleConfiguration yamlConfiguration) {
-        Collection<ReplicaLogicTableRuleConfiguration> tables = yamlConfiguration.getTables().stream()
-                .map(logicTableRuleConfigurationYamlSwapper::swapToObject)
-                .collect(Collectors.toList());
-        return new ReplicaRuleConfiguration(tables);
-    }
-    
-    @Override
-    public Class<ReplicaRuleConfiguration> getTypeClass() {
-        return ReplicaRuleConfiguration.class;
-    }
-    
-    @Override
-    public String getRuleTagName() {
-        return "REPLICA";
-    }
-    
-    @Override
-    public int getOrder() {
-        return ReplicaOrder.ORDER;
-    }
-}
diff --git a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-route/src/main/java/org/apache/shardingsphere/replica/route/engine/ReplicaRouteDecorator.java b/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-route/src/main/java/org/apache/shardingsphere/replica/route/engine/ReplicaRouteDecorator.java
deleted file mode 100644
index 1de1da2..0000000
--- a/shardingsphere-features/shardingsphere-replica/shardingsphere-replica-route/src/main/java/org/apache/shardingsphere/replica/route/engine/ReplicaRouteDecorator.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.replica.route.engine;
-
-import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
-import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.route.context.RouteContext;
-import org.apache.shardingsphere.infra.route.context.RouteMapper;
-import org.apache.shardingsphere.infra.route.context.RouteUnit;
-import org.apache.shardingsphere.infra.route.decorator.RouteDecorator;
-import org.apache.shardingsphere.replica.constant.ReplicaOrder;
-import org.apache.shardingsphere.replica.rule.ReplicaRule;
-import org.apache.shardingsphere.replica.rule.ReplicaTableRule;
-import org.apache.shardingsphere.sql.parser.binder.statement.SQLStatementContext;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Optional;
-
-/**
- * Route decorator for replica.
- */
-public final class ReplicaRouteDecorator implements RouteDecorator<ReplicaRule> {
-    
-    @Override
-    public RouteContext decorate(final RouteContext routeContext, final ShardingSphereMetaData metaData, final ReplicaRule replicaRule, final ConfigurationProperties props) {
-        Map<String, ReplicaGroup> replicaGroups = new HashMap<>();
-        String schemaName = metaData.getSchemaName();
-        SQLStatementContext<?> sqlStatementContext = routeContext.getSqlStatementContext();
-        if (routeContext.getRouteResult().getRouteUnits().isEmpty()) {
-            ReplicaTableRule replicaRoutingRule = replicaRule.getReplicaTableRules().iterator().next();
-            ReplicaGroup replicaGroup = new ReplicaGroup(replicaRoutingRule.getPhysicsTable(), replicaRoutingRule.getReplicaGroupId(), replicaRoutingRule.getReplicaPeers(),
-                    replicaRoutingRule.getDataSourceName());
-            replicaGroups.put(ReplicaGroup.BLANK_REPLICA_GROUP_KEY, replicaGroup);
-            return new RouteContext(routeContext, routeContext.getRouteResult(), new ReplicaRouteStageContext(schemaName, replicaGroups, sqlStatementContext.isReadOnly()), getTypeClass());
-        }
-        for (RouteUnit each : routeContext.getRouteResult().getRouteUnits()) {
-            Collection<RouteMapper> routeMappers = each.getTableMappers();
-            if (null == routeMappers || routeMappers.isEmpty()) {
-                ReplicaTableRule replicaRoutingRule = replicaRule.getReplicaTableRules().iterator().next();
-                ReplicaGroup replicaGroup = new ReplicaGroup(replicaRoutingRule.getPhysicsTable(), replicaRoutingRule.getReplicaGroupId(), replicaRoutingRule.getReplicaPeers(),
-                        replicaRoutingRule.getDataSourceName());
-                replicaGroups.put(ReplicaGroup.BLANK_REPLICA_GROUP_KEY, replicaGroup);
-            } else {
-                routeReplicaGroups(routeMappers, replicaRule, replicaGroups);
-            }
-        }
-        return new RouteContext(routeContext, routeContext.getRouteResult(), new ReplicaRouteStageContext(schemaName, replicaGroups, sqlStatementContext.isReadOnly()), getTypeClass());
-    }
-    
-    private void routeReplicaGroups(final Collection<RouteMapper> routeMappers, final ReplicaRule replicaRule, final Map<String, ReplicaGroup> replicaGroups) {
-        for (RouteMapper each : routeMappers) {
-            String actualTableName = each.getActualName();
-            Optional<ReplicaTableRule> replicaRoutingRuleOptional = replicaRule.findRoutingByTable(actualTableName);
-            ReplicaGroup replicaGroup;
-            if (replicaRoutingRuleOptional.isPresent()) {
-                ReplicaTableRule replicaRoutingRule = replicaRoutingRuleOptional.get();
-                replicaGroup = new ReplicaGroup(replicaRoutingRule.getPhysicsTable(), replicaRoutingRule.getReplicaGroupId(), replicaRoutingRule.getReplicaPeers(),
-                        replicaRoutingRule.getDataSourceName());
-                replicaGroups.put(actualTableName, replicaGroup);
-            } else {
-                ReplicaTableRule replicaRoutingRule = replicaRule.getReplicaTableRules().iterator().next();
-                replicaGroup = new ReplicaGroup(replicaRoutingRule.getPhysicsTable(), replicaRoutingRule.getReplicaGroupId(), replicaRoutingRule.getReplicaPeers(),
-                        replicaRoutingRule.getDataSourceName());
-            }
-            replicaGroups.put(actualTableName, replicaGroup);
-        }
-    }
-    
-    @Override
-    public int getOrder() {
-        return ReplicaOrder.ORDER;
-    }
-    
-    @Override
-    public Class<ReplicaRule> getTypeClass() {
-        return ReplicaRule.class;
-    }
-}
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/pom.xml b/shardingsphere-jdbc/shardingsphere-jdbc-core/pom.xml
index 3ee8e65..c736f30 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/pom.xml
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/pom.xml
@@ -104,12 +104,12 @@
         </dependency>
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
-            <artifactId>shardingsphere-replica-route</artifactId>
+            <artifactId>shardingsphere-consensus-replication-route</artifactId>
             <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
-            <artifactId>shardingsphere-replica-execute</artifactId>
+            <artifactId>shardingsphere-consensus-replication-executor</artifactId>
             <version>${project.version}</version>
         </dependency>
         
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/pom.xml b/shardingsphere-proxy/shardingsphere-proxy-backend/pom.xml
index b3d3d95..caa5b9e 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/pom.xml
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/pom.xml
@@ -109,12 +109,12 @@
         </dependency>
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
-            <artifactId>shardingsphere-replica-route</artifactId>
+            <artifactId>shardingsphere-consensus-replication-route</artifactId>
             <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
-            <artifactId>shardingsphere-replica-execute</artifactId>
+            <artifactId>shardingsphere-consensus-replication-executor</artifactId>
             <version>${project.version}</version>
         </dependency>
         <dependency>