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

aloyszhang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/inlong-website.git


The following commit(s) were added to refs/heads/master by this push:
     new 487ba0696fd [INLONG-1060][Doc] Improve display of documents (#1061)
487ba0696fd is described below

commit 487ba0696fdb600fdc9bd691feaf095435541d19
Author: AloysZhang <[email protected]>
AuthorDate: Thu Oct 17 20:06:58 2024 +0800

    [INLONG-1060][Doc] Improve display of documents (#1061)
---
 config/team.json                                   |  84 +++++---
 .../{cluster_management => }/agent_management.md   |   2 +-
 .../cluster_management/_category_.json             |   4 -
 .../{cluster_management => }/img/agent_batch.png   | Bin
 .../{cluster_management => }/img/agent_install.png | Bin
 .../img/agent_modify_delete.png                    | Bin
 .../img/agent_package_modify_delete.png            | Bin
 .../img/agent_package_new.png                      | Bin
 .../img/agent_version_modify_delete.png            | Bin
 .../img/agent_version_new.png                      | Bin
 .../how_to_extend_data_node_for_sort.md            | 221 --------------------
 docs/development/api.md                            |   2 +-
 docs/development/extension_agent/_category_.json   |   2 +-
 .../extension_dashboard/_category_.json            |   4 +
 .../how_to_write_plugin_dashboard.md               |   4 +-
 .../extension_dashboard}/img/dashboard_plugin.png  | Bin
 docs/development/extension_manager/_category_.json |   2 +-
 .../extension_manager/inlong_manager_plugin.md     |   2 +-
 .../inlong_manager_shiro_plugin.md                 |   2 +-
 .../inlong_manger_data_node_extension.md}          |  10 +-
 docs/development/extension_sort/_category_.json    |   2 +-
 .../extension_sort/extension_connector.md          | 216 +++++++++++++++++++-
 .../extension_sort}/img/sort_uml.png               | Bin
 .../extension_transform/_category_.json            |   2 +-
 .../extention_dataproxy/_category_.json            |   4 +
 .../how_to_write_plugin_dataproxy.md               |   4 +-
 .../extention_dataproxy}/img/dataproxy_mq_sink.png | Bin
 docs/quick_start/data_subscription/_category_.json |   2 +-
 docs/quick_start/data_sync/_category_.json         |   4 -
 .../quick_start/realtime_data_sync/_category_.json |   4 +
 .../img/mysql_clickhouse/approve.png               | Bin
 .../img/mysql_clickhouse/audit.png                 | Bin
 .../img/mysql_clickhouse/clickhouse_datanode.png   | Bin
 .../img/mysql_clickhouse/group_stream.png          | Bin
 .../img/mysql_clickhouse/sink.png                  | Bin
 .../img/mysql_clickhouse/sink_data.png             | Bin
 .../img/mysql_clickhouse/sink_fields.png           | Bin
 .../img/mysql_clickhouse/source.png                | Bin
 .../img/mysql_clickhouse/source_data.png           | Bin
 .../img/mysql_iceberg/approval.png                 | Bin
 .../img/mysql_iceberg/audit_iceberg.png            | Bin
 .../img/mysql_iceberg/create_group_stream.png      | Bin
 .../img/mysql_iceberg/create_iceberg_datanode.png  | Bin
 .../img/mysql_iceberg/create_stream_sink.png       | Bin
 .../img/mysql_iceberg/create_stream_source.png     | Bin
 .../img/mysql_iceberg/result_iceberg.png           | Bin
 .../img/mysql_iceberg/result_mysql.png             | Bin
 .../img/mysql_iceberg/success.png                  | Bin
 .../img/mysql_starrocks/approve.png                | Bin
 .../img/mysql_starrocks/audit_starrocks.png        | Bin
 .../img/mysql_starrocks/create_fields.png          | Bin
 .../img/mysql_starrocks/create_group_stream.png    | Bin
 .../img/mysql_starrocks/create_sink.png            | Bin
 .../img/mysql_starrocks/create_source.png          | Bin
 .../mysql_starrocks/create_starrocks_datanode.png  | Bin
 .../img/mysql_starrocks/result_sink.png            | Bin
 .../img/mysql_starrocks/result_source.png          | Bin
 .../img/mysql_starrocks/success.png                | Bin
 .../img/pulsar_clickhouse/approve.png              | Bin
 .../img/pulsar_clickhouse/clickhouse_datanode.png  | Bin
 .../img/pulsar_clickhouse/group_stream.png         | Bin
 .../img/pulsar_clickhouse/sink.png                 | Bin
 .../img/pulsar_clickhouse/sink_data.png            | Bin
 .../img/pulsar_clickhouse/sink_fields.png          | Bin
 .../img/pulsar_clickhouse/source.png               | Bin
 .../mysql_clickhouse_example.md                    |   0
 .../mysql_iceberg_example.md                       |   0
 .../mysql_starrocks_example.md                     |   0
 .../pulsar_clickhouse_example.md                   |   0
 .../docusaurus-plugin-content-docs/current.json    |  20 +-
 .../{cluster_management => }/agent_management.md   |   2 +-
 .../{cluster_management => }/img/agent_batch.png   | Bin
 .../{cluster_management => }/img/agent_install.png | Bin
 .../img/agent_modify_delete.png                    | Bin
 .../img/agent_package_modify_delete.png            | Bin
 .../img/agent_package_new.png                      | Bin
 .../img/agent_version_modify_delete.png            | Bin
 .../img/agent_version_new.png                      | Bin
 .../how_to_extend_data_node_for_sort.md            | 222 ---------------------
 .../how_to_write_plugin_dashboard.md               |   4 +-
 .../extension_dashboard}/img/dashboard_plugin.png  | Bin
 .../how_to_write_plugin_dataproxy.md               |   4 +-
 .../extension_dataproxy}/img/dataproxy_mq_sink.png | Bin
 .../inlong_manger_data_node_extension.md}          |  10 +-
 .../extension_sort/extension_connector.md          | 217 +++++++++++++++++++-
 .../extension_sort}/img/sort_uml.png               | Bin
 .../img/mysql_clickhouse/approve.png               | Bin
 .../img/mysql_clickhouse/audit.png                 | Bin
 .../img/mysql_clickhouse/clickhouse_datanode.png   | Bin
 .../img/mysql_clickhouse/group_stream.png          | Bin
 .../img/mysql_clickhouse/sink.png                  | Bin
 .../img/mysql_clickhouse/sink_data.png             | Bin
 .../img/mysql_clickhouse/sink_fields.png           | Bin
 .../img/mysql_clickhouse/source.png                | Bin
 .../img/mysql_clickhouse/source_data.png           | Bin
 .../img/mysql_iceberg/approval.png                 | Bin
 .../img/mysql_iceberg/audit_iceberg.png            | Bin
 .../img/mysql_iceberg/create_group_stream.png      | Bin
 .../img/mysql_iceberg/create_iceberg_datanode.png  | Bin
 .../img/mysql_iceberg/create_stream_sink.png       | Bin
 .../img/mysql_iceberg/create_stream_source.png     | Bin
 .../img/mysql_iceberg/result_iceberg.png           | Bin
 .../img/mysql_iceberg/result_mysql.png             | Bin
 .../img/mysql_iceberg/success.png                  | Bin
 .../img/mysql_starrocks/approve.png                | Bin
 .../img/mysql_starrocks/audit_starrocks.png        | Bin
 .../img/mysql_starrocks/create_fields.png          | Bin
 .../img/mysql_starrocks/create_group_stream.png    | Bin
 .../img/mysql_starrocks/create_sink.png            | Bin
 .../img/mysql_starrocks/create_source.png          | Bin
 .../mysql_starrocks/create_starrocks_datanode.png  | Bin
 .../img/mysql_starrocks/result_sink.png            | Bin
 .../img/mysql_starrocks/result_source.png          | Bin
 .../img/mysql_starrocks/success.png                | Bin
 .../img/pulsar_clickhouse/approve.png              | Bin
 .../img/pulsar_clickhouse/clickhouse_datanode.png  | Bin
 .../img/pulsar_clickhouse/group_stream.png         | Bin
 .../img/pulsar_clickhouse/sink.png                 | Bin
 .../img/pulsar_clickhouse/sink_data.png            | Bin
 .../img/pulsar_clickhouse/sink_fields.png          | Bin
 .../img/pulsar_clickhouse/source.png               | Bin
 .../mysql_clickhouse_example.md                    |   0
 .../mysql_iceberg_example.md                       |   0
 .../mysql_starrocks_example.md                     |   0
 .../pulsar_clickhouse_example.md                   |   0
 125 files changed, 537 insertions(+), 519 deletions(-)

diff --git a/config/team.json b/config/team.json
index d98af8582ff..110c2321af3 100644
--- a/config/team.json
+++ b/config/team.json
@@ -12,6 +12,30 @@
       "publicName": "Charles Zhang",
       "avatarUrl": "https://avatars.githubusercontent.com/u/18047329?v=4";
     },
+    {
+      "apacheID": "baomingyu",
+      "githubName": "baomingyu",
+      "publicName": "Mingyu Bao",
+      "avatarUrl": "https://avatars.githubusercontent.com/u/8108604?v=4";
+    },
+    {
+      "apacheID": "luchunliang",
+      "githubName": "luchunliang",
+      "publicName": "Lu Chunliang",
+      "avatarUrl": "https://avatars.githubusercontent.com/u/8925507?v=4";
+    },
+    {
+      "apacheID": "vernedeng",
+      "githubName": "vernedeng",
+      "publicName": "Fan Deng",
+      "avatarUrl": "https://avatars.githubusercontent.com/u/45282474?v=4";
+    },
+    {
+      "apacheID": "wakefu",
+      "githubName": "fuweng11",
+      "publicName": "Wenkai Fu",
+      "avatarUrl": "https://avatars.githubusercontent.com/u/76141879?v=4";
+    },
     {
       "apacheID": "leezng",
       "githubName": "leezng",
@@ -170,30 +194,12 @@
       "publicName": "David Nalley",
       "avatarUrl": "https://avatars.githubusercontent.com/u/222407?v=4";
     },
-    {
-      "apacheID": "vernedeng",
-      "githubName": "vernedeng",
-      "publicName": "Fan Deng",
-      "avatarUrl": "https://avatars.githubusercontent.com/u/45282474?v=4";
-    },
     {
       "apacheID": "haifxu",
       "githubName": "haifxu",
       "publicName": "Haif Xu",
       "avatarUrl": "https://avatars.githubusercontent.com/u/58519431?v=4";
     },
-    {
-      "apacheID": "luchunliang",
-      "githubName": "luchunliang",
-      "publicName": "Lu Chunliang",
-      "avatarUrl": "https://avatars.githubusercontent.com/u/8925507?v=4";
-    },
-    {
-      "apacheID": "baomingyu",
-      "githubName": "baomingyu",
-      "publicName": "Mingyu Bao",
-      "avatarUrl": "https://avatars.githubusercontent.com/u/8108604?v=4";
-    },
     {
       "apacheID": "sijie",
       "githubName": "sijie",
@@ -206,12 +212,6 @@
       "publicName": "The Xia",
       "avatarUrl": "https://avatars.githubusercontent.com/u/37214832?v=4";
     },
-    {
-      "apacheID": "wakefu",
-      "githubName": "fuweng11",
-      "publicName": "Wenkai Fu",
-      "avatarUrl": "https://avatars.githubusercontent.com/u/76141879?v=4";
-    },
     {
       "apacheID": "xiangli",
       "githubName": "waterlx",
@@ -248,6 +248,42 @@
       "publicName": "Zhijie Shen",
       "avatarUrl": "https://avatars.githubusercontent.com/u/35021395?v=4";
     },
+    {
+      "apacheID": "doleyzi",
+      "githubName": "doleyzi",
+      "publicName": "Doley Zi",
+      "avatarUrl": "https://avatars.githubusercontent.com/u/43397300?v=4";
+    },
+    {
+      "apacheID": "emhui",
+      "githubName": "e-mhui",
+      "publicName": "MengHui Yu",
+      "avatarUrl": "https://avatars.githubusercontent.com/u/111486498?v=4";
+    },
+    {
+      "apacheID": "featzhang",
+      "githubName": "featzhang",
+      "publicName": "Zuofeng Zhang",
+      "avatarUrl": "https://avatars.githubusercontent.com/u/5709212?v=4";
+    },
+    {
+      "apacheID": "gftan",
+      "githubName": "GanfengTan",
+      "publicName": "Ganfeng Tan",
+      "avatarUrl": "https://avatars.githubusercontent.com/u/17596132?v=4";
+    },
+    {
+      "apacheID": "vinner",
+      "githubName": "XiaoYou201",
+      "publicName": "Wensong Zhang",
+      "avatarUrl": "https://avatars.githubusercontent.com/u/43397300?v=4";
+    },
+    {
+      "apacheID": "wenweihuang",
+      "githubName": "justinwwhuang",
+      "publicName": "Wenwei Huang",
+      "avatarUrl": "https://avatars.githubusercontent.com/u/26856549?v=4";
+    },
     {
       "apacheID": "woofyzhao",
       "githubName": "woofyzhao",
diff --git a/docs/administration/cluster_management/agent_management.md 
b/docs/administration/agent_management.md
similarity index 98%
rename from docs/administration/cluster_management/agent_management.md
rename to docs/administration/agent_management.md
index 81e442ff2a5..1c2c572dcab 100644
--- a/docs/administration/cluster_management/agent_management.md
+++ b/docs/administration/agent_management.md
@@ -1,6 +1,6 @@
 ---
 title: Agent management
-sidebar_position: 1
+sidebar_position: 8
 ---
 
 ## Overview
diff --git a/docs/administration/cluster_management/_category_.json 
b/docs/administration/cluster_management/_category_.json
deleted file mode 100644
index f4056a9fcc7..00000000000
--- a/docs/administration/cluster_management/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "label": "Cluster Management",
-  "position": 8
-}
\ No newline at end of file
diff --git a/docs/administration/cluster_management/img/agent_batch.png 
b/docs/administration/img/agent_batch.png
similarity index 100%
rename from docs/administration/cluster_management/img/agent_batch.png
rename to docs/administration/img/agent_batch.png
diff --git a/docs/administration/cluster_management/img/agent_install.png 
b/docs/administration/img/agent_install.png
similarity index 100%
rename from docs/administration/cluster_management/img/agent_install.png
rename to docs/administration/img/agent_install.png
diff --git a/docs/administration/cluster_management/img/agent_modify_delete.png 
b/docs/administration/img/agent_modify_delete.png
similarity index 100%
rename from docs/administration/cluster_management/img/agent_modify_delete.png
rename to docs/administration/img/agent_modify_delete.png
diff --git 
a/docs/administration/cluster_management/img/agent_package_modify_delete.png 
b/docs/administration/img/agent_package_modify_delete.png
similarity index 100%
rename from 
docs/administration/cluster_management/img/agent_package_modify_delete.png
rename to docs/administration/img/agent_package_modify_delete.png
diff --git a/docs/administration/cluster_management/img/agent_package_new.png 
b/docs/administration/img/agent_package_new.png
similarity index 100%
rename from docs/administration/cluster_management/img/agent_package_new.png
rename to docs/administration/img/agent_package_new.png
diff --git 
a/docs/administration/cluster_management/img/agent_version_modify_delete.png 
b/docs/administration/img/agent_version_modify_delete.png
similarity index 100%
rename from 
docs/administration/cluster_management/img/agent_version_modify_delete.png
rename to docs/administration/img/agent_version_modify_delete.png
diff --git a/docs/administration/cluster_management/img/agent_version_new.png 
b/docs/administration/img/agent_version_new.png
similarity index 100%
rename from docs/administration/cluster_management/img/agent_version_new.png
rename to docs/administration/img/agent_version_new.png
diff --git a/docs/design_and_concept/how_to_extend_data_node_for_sort.md 
b/docs/design_and_concept/how_to_extend_data_node_for_sort.md
deleted file mode 100644
index bc2276b46fd..00000000000
--- a/docs/design_and_concept/how_to_extend_data_node_for_sort.md
+++ /dev/null
@@ -1,221 +0,0 @@
----
-title: Sort Plugin
-sidebar_position: 4
----
-
-## Overview
-
-InLong Sort is an ETL service based on Apache Flink SQL, the powerful 
expressive power of Flink SQL brings high scalability and flexibility. 
-Basically, the semantics supported by Flink SQL are supported by InLong Sort. 
In some scenarios, when the built-in functions of Flink SQL do not meet the 
requirements, 
-they can also be extended through various UDFs in InLong Sort. At the same 
time, it will be easier for those who have used SQL, especially Flink SQL, to 
get started.
-
-This article describes how to extend a new source (abstracted as extract node 
in inlong) or a new sink (abstracted as load node in inlong) in InLong Sort. 
-The architecture of inlong sort can be represented by UML object relation 
diagram as:
-
-![sort_UML](img/sort_uml.png)
-
-The concepts of each component are:
-
-| **Name**              | **Description**                                      
        |
-| --------------------- | 
------------------------------------------------------------ |
-| **Group**             | data flow group, including multiple data flows, one 
group represents one data access |
-| **Stream**            | data flow, a data flow has a specific flow direction 
        |
-| **GroupInfo**         | encapsulation of data flow in sort. a groupinfo can 
contain multiple dataflowinfo |
-| **StreamInfo**        | abstract of data flow in sort, including various 
sources, transformations, destinations, etc. |
-| **Node**              | abstraction of data source, data transformation and 
data destination in data synchronization |
-| **ExtractNode**       | source-side abstraction for data synchronization     
        |
-| **TransformNode**     | transformation process abstraction of data 
synchronization   |
-| **LoadNode**          | destination abstraction for data synchronization     
        |
-| **NodeRelationShip**  | abstraction of each node relationship in data 
synchronization |
-| **FieldRelationShip** | abstraction of the relationship between upstream and 
downstream node fields in data synchronization |
-| **FieldInfo**         | node field                                           
        |
-| **MetaFieldInfo**     | node meta fields                                     
        |
-| **Function**          | abstraction of transformation function               
        |
-| **FunctionParam**     | input parameter abstraction of function              
        |
-| **ConstantParam**     | constant parameters                                  
        |
-
-To extend the extract node or load node, you need to do the following:
-
-- Inherit the node class (such as MyExtractNode) and build specific extract or 
load usage logic;
-- In a specific node class (such as MyExtractNode), specify the corresponding 
Flink connector;
-- Use specific node classes in specific ETL implementation logic (such as 
MyExtractNode)
-
-In the second step, you can use the existing flick connector or extend it 
yourself. How to extend the flink connector, please refer to the official flink 
documentation[DataStream Connectors 
](https://nightlies.apache.org/flink/flink-docs-release-1.13/docs/connectors/datastream/overview/#datastream-connectors).
-
-## Extend Extract Node
-
-There are three steps to extend an ExtractNode: 
-
-**Step 1**:Inherit the ExtractNode class,the location of the class is:
-```bash
-inlong-sort/sort-common/src/main/java/org/apache/inlong/sort/protocol/node/ExtractNode.java
-```
-
-Specify the connector in the implemented ExtractNode.
-
-```Java
-// Inherit ExtractNode class and implement specific classes, such as 
MongoExtractNode
-@EqualsAndHashCode(callSuper = true)
-@JsonTypeName("MongoExtract")
-@Data
-public class MongoExtractNode extends ExtractNode implements Serializable {
-    @JsonInclude(Include.NON_NULL)
-    @JsonProperty("primaryKey")
-    private String primaryKey;
-    ...
-
-    @JsonCreator
-    public MongoExtractNode(@JsonProperty("id") String id, ...) { ... }
-
-    @Override
-    public Map<String, String> tableOptions() {
-        Map<String, String> options = super.tableOptions();
-        // configure the specified connector, here is mongodb-cdc
-        options.put("connector", "mongodb-cdc");
-        ...
-        return options;
-    }
-}
-```
-
-**Step 2**:add the Extract to JsonSubTypes in ExtractNode and Node
-
-```java
-// add field in JsonSubTypes of ExtractNode and Node
-...
-@JsonSubTypes({
-        @JsonSubTypes.Type(value = MongoExtractNode.class, name = 
"mongoExtract")
-})
-...
-public abstract class ExtractNode implements Node{...}
-
-...
-@JsonSubTypes({
-        @JsonSubTypes.Type(value = MongoExtractNode.class, name = 
"mongoExtract")
-})
-public interface Node {...}
-```
-
-**Step 3**:Expand the Sort connector and check whether the corresponding 
connector already exists in the (`InLong 
Agentinlong-sort/sort-connectors/mongodb-cdc`) directory. If you haven't 
already, 
-you need to refer to the official flink documentation [DataStream 
Connectors](https://nightlies.apache.org/flink/flink-docs-release-1.13/docs/connectors/datastream/overview/#datastream-connectors)
 to extend, 
-directly call the existing flink-connector (such 
as`inlong-sort/sort-connectors/mongodb-cdc`) or implement the related connector 
by yourself.
-
-## Extend Load Node
-
-There are three steps to extend an LoadNode: 
-
-**Step 1**:Inherit the LoadNode class, the location of the class is:
-```bash
-inlong-sort/sort-common/src/main/java/org/apache/inlong/sort/protocol/node/LoadNode.java
-```
-specify the connector in the implemented LoadNode.
-
-```java
-// Inherit LoadNode class and implement specific classes, such as KafkaLoadNode
-@EqualsAndHashCode(callSuper = true)
-@JsonTypeName("kafkaLoad")
-@Data
-@NoArgsConstructor
-public class KafkaLoadNode extends LoadNode implements Serializable {
-    @Nonnull
-    @JsonProperty("topic")
-    private String topic;
-    ...
-
-    @JsonCreator
-    public KafkaLoadNode(@Nonnull @JsonProperty("topic") String topic, ...) 
{...}
-
-    // configure and use different connectors according to different conditions
-    @Override
-    public Map<String, String> tableOptions() {
-      ...
-        if (format instanceof JsonFormat || format instanceof AvroFormat || 
format instanceof CsvFormat) {
-            if (StringUtils.isEmpty(this.primaryKey)) {
-                // kafka connector
-                options.put("connector", "kafka");
-                options.putAll(format.generateOptions(false));
-            } else {
-                options.put("connector", "upsert-kafka"); // upsert-kafka 
connector
-                options.putAll(format.generateOptions(true));
-            }
-        } else if (format instanceof CanalJsonFormat || format instanceof 
DebeziumJsonFormat) {
-            // kafka-inlong connector
-            options.put("connector", "kafka-inlong");
-            options.putAll(format.generateOptions(false));
-        } else {
-            throw new IllegalArgumentException("kafka load Node format is 
IllegalArgument");
-        }
-        return options;
-    }
-}
-```
-
-**Step 2**:add the Load to JsonSubTypes in ExtractNode and Node
-
-```java
-// add field in JsonSubTypes of LoadNode and Node
-...
-@JsonSubTypes({
-        @JsonSubTypes.Type(value = KafkaLoadNode.class, name = "kafkaLoad")
-})
-...
-public abstract class LoadNode implements Node{...}
-
-...
-@JsonSubTypes({
-        @JsonSubTypes.Type(value = KafkaLoadNode.class, name = "kafkaLoad")
-})
-public interface Node {...}
-```
-
-**Step 3**:Extend the Sort connector, Kafka's sort connector is in 
`inlong-sort/sort-connectors/kafka`.
-
-## Integrate Entrance
-
-To integrate extract and load into the InLong Sort mainstream, you need to 
implement the semantics mentioned in the overview section: group, stream, node, 
etc. The entry class of InLong Sort is in :
-```bash
-inlong-sort/sort-core/src/main/java/org/apache/inlong/sort/Entrance.java
-```
-How to integrate extract and load into InLong Sort can refer to the following 
ut. First, build the corresponding extractnode and loadnode, then build 
noderelation, streaminfo and groupinfo, and finally use FlinkSqlParser to 
execute.
-
-```java
-public class MongoExtractToKafkaLoad extends AbstractTestBase {
-
-    // create MongoExtractNode
-    private MongoExtractNode buildMongoNode() {
-        List<FieldInfo> fields = Arrays.asList(new FieldInfo("name", new 
StringFormatInfo()), ...);
-        return new MongoExtractNode(..., fields, ...);
-    }
-
-    // create KafkaLoadNode
-    private KafkaLoadNode buildAllMigrateKafkaNode() {
-        List<FieldInfo> fields = Arrays.asList(new FieldInfo("name", new 
StringFormatInfo()), ...);
-        List<FieldRelation> relations = Arrays.asList(new FieldRelation(new 
FieldInfo("name", new StringFormatInfo()), ...), ...);
-        CsvFormat csvFormat = new CsvFormat();
-        return new KafkaLoadNode(..., fields, relations, csvFormat, ...);
-    }
-
-    // create NodeRelation
-    private NodeRelation buildNodeRelation(List<Node> inputs, List<Node> 
outputs) {
-        List<String> inputIds = 
inputs.stream().map(Node::getId).collect(Collectors.toList());
-        List<String> outputIds = 
outputs.stream().map(Node::getId).collect(Collectors.toList());
-        return new NodeRelation(inputIds, outputIds);
-    }
-
-    // test the main flow: mongodb to kafka
-    @Test
-    public void testMongoDbToKafka() throws Exception {
-        EnvironmentSettings settings = EnvironmentSettings. ... .build();
-        StreamExecutionEnvironment env = 
StreamExecutionEnvironment.getExecutionEnvironment();
-        ...
-        StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env, 
settings);
-        Node inputNode = buildMongoNode();
-        Node outputNode = buildAllMigrateKafkaNode();
-        StreamInfo streamInfo = new StreamInfo("1", Arrays.asList(inputNode, 
outputNode), ...);
-        GroupInfo groupInfo = new GroupInfo("1", 
Collections.singletonList(streamInfo));
-        FlinkSqlParser parser = FlinkSqlParser.getInstance(tableEnv, 
groupInfo);
-        ParseResult result = parser.parse();
-        Assert.assertTrue(result.tryExecute());
-    }
-}
-```
diff --git a/docs/development/api.md b/docs/development/api.md
index 81ca59e118d..fc2fe710a73 100644
--- a/docs/development/api.md
+++ b/docs/development/api.md
@@ -1,6 +1,6 @@
 ---
 title: REST API
-sidebar_position: 7
+sidebar_position: 9
 ---
 
 <!-- To maintain consistent display, please remove the `info` and `host` 
content from the original `api.json` -->
diff --git a/docs/development/extension_agent/_category_.json 
b/docs/development/extension_agent/_category_.json
index f993194cadd..5ea2e4f9cd7 100644
--- a/docs/development/extension_agent/_category_.json
+++ b/docs/development/extension_agent/_category_.json
@@ -1,4 +1,4 @@
 {
   "label": "Agent Plugins Extension",
-  "position": 3
+  "position": 4
 }
\ No newline at end of file
diff --git a/docs/development/extension_dashboard/_category_.json 
b/docs/development/extension_dashboard/_category_.json
new file mode 100644
index 00000000000..d91c03d51cd
--- /dev/null
+++ b/docs/development/extension_dashboard/_category_.json
@@ -0,0 +1,4 @@
+{
+  "label": "Dashboard Plugins Extension",
+  "position": 8
+}
\ No newline at end of file
diff --git a/docs/design_and_concept/how_to_write_plugin_dashboard.md 
b/docs/development/extension_dashboard/how_to_write_plugin_dashboard.md
similarity index 98%
rename from docs/design_and_concept/how_to_write_plugin_dashboard.md
rename to docs/development/extension_dashboard/how_to_write_plugin_dashboard.md
index a037b90711e..292662883ca 100644
--- a/docs/design_and_concept/how_to_write_plugin_dashboard.md
+++ b/docs/development/extension_dashboard/how_to_write_plugin_dashboard.md
@@ -1,6 +1,6 @@
 ---
-title: Dashboard Plugin
-sidebar_position: 5
+title: Dashboard Plugin Extension
+sidebar_position: 1
 ---
 
 ## Overview
diff --git a/docs/design_and_concept/img/dashboard_plugin.png 
b/docs/development/extension_dashboard/img/dashboard_plugin.png
similarity index 100%
rename from docs/design_and_concept/img/dashboard_plugin.png
rename to docs/development/extension_dashboard/img/dashboard_plugin.png
diff --git a/docs/development/extension_manager/_category_.json 
b/docs/development/extension_manager/_category_.json
index b31809ed94c..a64c7042aed 100644
--- a/docs/development/extension_manager/_category_.json
+++ b/docs/development/extension_manager/_category_.json
@@ -1,4 +1,4 @@
 {
   "label": "Manager Plugins Extension",
-  "position": 4
+  "position": 5
 }
\ No newline at end of file
diff --git a/docs/development/extension_manager/inlong_manager_plugin.md 
b/docs/development/extension_manager/inlong_manager_plugin.md
index a119c8822e3..d0043e61108 100644
--- a/docs/development/extension_manager/inlong_manager_plugin.md
+++ b/docs/development/extension_manager/inlong_manager_plugin.md
@@ -1,6 +1,6 @@
 ---
 title: Manager Custom Plugin
-sidebar_position: 3
+sidebar_position: 2
 ---
 ## Overview
 
diff --git a/docs/development/extension_manager/inlong_manager_shiro_plugin.md 
b/docs/development/extension_manager/inlong_manager_shiro_plugin.md
index 71b1d35685d..2619144cb98 100644
--- a/docs/development/extension_manager/inlong_manager_shiro_plugin.md
+++ b/docs/development/extension_manager/inlong_manager_shiro_plugin.md
@@ -1,6 +1,6 @@
 ---
 title: Custom Authentication
-sidebar_position: 2
+sidebar_position: 1
 ---
 
 import {siteVariables} from '../../version';
diff --git a/docs/design_and_concept/how_to_extend_data_node_for_manager.md 
b/docs/development/extension_manager/inlong_manger_data_node_extension.md
similarity index 77%
rename from docs/design_and_concept/how_to_extend_data_node_for_manager.md
rename to 
docs/development/extension_manager/inlong_manger_data_node_extension.md
index f821c234511..2e083382878 100644
--- a/docs/design_and_concept/how_to_extend_data_node_for_manager.md
+++ b/docs/development/extension_manager/inlong_manger_data_node_extension.md
@@ -1,17 +1,17 @@
 ---
-title: Manager Plugin
-sidebar_position: 6
+title: Manager Custom Data Node
+sidebar_position: 3
 ---
 
 ## Overview
 
 Inlong is aimed at create dataflow between different data sources, now Inlong 
has support several universal data sources such as **MySQL**, **Apache Kafka**, 
**ClickHouse** on Input/Output respectively,
-You can refer to [Data Node](data_node/extract_node/overview.md) for specific 
information. Each Data Node of InLong supports unified management through 
Manager to simplify the use of users.
+You can refer to [Data Node](../../data_node/extract_node/overview.md) for 
specific information. Each Data Node of InLong supports unified management 
through Manager to simplify the use of users.
 This article describes how to extend a new data node through the Manager to 
provide services.
 
 ## Extend Extract Node
 
-- Develop extract node plugin in sort, refer to [Sort 
Plugin](design_and_concept/how_to_extend_data_node_for_sort.md)
+- Develop extract node plugin in sort, refer to [Sort 
Plugin](../extension_sort/extension_connector.md)
 - Add **TaskType** in `org.apache.inlong.common.enums.TaskTypeEnum`
 - Add **SourceType** in `org.apache.inlong.manager.common.consts.SourceType`
 - Create new package under package path: 
`org.apache.inlong.manager.common.pojo.source`, develop every entity class 
needed.
@@ -20,7 +20,7 @@ This article describes how to extend a new data node through 
the Manager to prov
 
 ## Extend Load Node
 
-- Develop load node plugin in sort, refer to [Sort 
Plugin](design_and_concept/how_to_extend_data_node_for_sort.md)
+- Develop load node plugin in sort, refer to [Sort 
Plugin](../extension_sort/extension_connector.md)
 - Add **SinkType** in `org.apache.inlong.manager.common.consts.SinkType`
 - Create new package under package path: 
`org.apache.inlong.manager.common.pojo.sink`, develop every entity class needed.
 - Create Operation class for new data source under package path: 
`org.apache.inlong.manager.service.sink`.
diff --git a/docs/development/extension_sort/_category_.json 
b/docs/development/extension_sort/_category_.json
index f81ca1f790e..099b8ed479d 100644
--- a/docs/development/extension_sort/_category_.json
+++ b/docs/development/extension_sort/_category_.json
@@ -1,4 +1,4 @@
 {
   "label": "Sort Plugins Extension",
-  "position": 5
+  "position": 6
 }
\ No newline at end of file
diff --git a/docs/development/extension_sort/extension_connector.md 
b/docs/development/extension_sort/extension_connector.md
index aea65328cfb..76f58968c2a 100644
--- a/docs/development/extension_sort/extension_connector.md
+++ b/docs/development/extension_sort/extension_connector.md
@@ -2,12 +2,40 @@
 title: Sort Extension Connector
 sidebar_position: 1
 ---
+#  Sort Extension Connector
 
-# How to Extend Extract Node and Load Node Types
+## Overview
 
-## Extending Extract & Load Node
+InLong Sort is an ETL service based on Apache Flink SQL, the powerful 
expressive power of Flink SQL brings high scalability and flexibility.
+Basically, the semantics supported by Flink SQL are supported by InLong Sort. 
In some scenarios, when the built-in functions of Flink SQL do not meet the 
requirements,
+they can also be extended through various UDFs in InLong Sort. At the same 
time, it will be easier for those who have used SQL, especially Flink SQL, to 
get started.
+
+This article describes how to extend a new source (abstracted as extract node 
in inlong) or a new sink (abstracted as load node in inlong) in InLong Sort.
+The architecture of inlong sort can be represented by UML object relation 
diagram as:
+
+![sort_UML](img/sort_uml.png)
+
+The concepts of each component are:
 
-### Introduction
+| **Name**              | **Description**                                      
        |
+| --------------------- | 
------------------------------------------------------------ |
+| **Group**             | data flow group, including multiple data flows, one 
group represents one data access |
+| **Stream**            | data flow, a data flow has a specific flow direction 
        |
+| **GroupInfo**         | encapsulation of data flow in sort. a groupinfo can 
contain multiple dataflowinfo |
+| **StreamInfo**        | abstract of data flow in sort, including various 
sources, transformations, destinations, etc. |
+| **Node**              | abstraction of data source, data transformation and 
data destination in data synchronization |
+| **ExtractNode**       | source-side abstraction for data synchronization     
        |
+| **TransformNode**     | transformation process abstraction of data 
synchronization   |
+| **LoadNode**          | destination abstraction for data synchronization     
        |
+| **NodeRelationShip**  | abstraction of each node relationship in data 
synchronization |
+| **FieldRelationShip** | abstraction of the relationship between upstream and 
downstream node fields in data synchronization |
+| **FieldInfo**         | node field                                           
        |
+| **MetaFieldInfo**     | node meta fields                                     
        |
+| **Function**          | abstraction of transformation function               
        |
+| **FunctionParam**     | input parameter abstraction of function              
        |
+| **ConstantParam**     | constant parameters                                  
        |
+
+## Extending Extract & Load Node
 
 The Extract nodes is a set of Source Connectors based on <a 
href="https://flink.apache.org/";>Apache Flink<sup>®</sup></a> used to extract 
data from different source systems.
 The Load nodes is a set of Sink Connectors based on <a 
href="https://flink.apache.org/";>Apache Flink<sup>®</sup></a> used to load data 
into different storage systems.
@@ -29,14 +57,192 @@ To customize an `Extract Node`, you need to inherit the 
`org.apache.inlong.sort.
 | getPrimaryKey      | Get primary key             | null                     |
 | getPartitionFields | Get partition fields           | null                   
  | 
 
+### Extend Extract Node
+
+There are three steps to extend an ExtractNode:
+
+**Step 1**:Inherit the ExtractNode class,the location of the class is:
+```bash
+inlong-sort/sort-common/src/main/java/org/apache/inlong/sort/protocol/node/ExtractNode.java
+```
+
+Specify the connector in the implemented ExtractNode.
+
+```Java
+// Inherit ExtractNode class and implement specific classes, such as 
MongoExtractNode
+@EqualsAndHashCode(callSuper = true)
+@JsonTypeName("MongoExtract")
+@Data
+public class MongoExtractNode extends ExtractNode implements Serializable {
+    @JsonInclude(Include.NON_NULL)
+    @JsonProperty("primaryKey")
+    private String primaryKey;
+    ...
+
+    @JsonCreator
+    public MongoExtractNode(@JsonProperty("id") String id, ...) { ... }
+
+    @Override
+    public Map<String, String> tableOptions() {
+        Map<String, String> options = super.tableOptions();
+        // configure the specified connector, here is mongodb-cdc
+        options.put("connector", "mongodb-cdc");
+        ...
+        return options;
+    }
+}
+```
+
+**Step 2**:add the Extract to JsonSubTypes in ExtractNode and Node
+
+```java
+// add field in JsonSubTypes of ExtractNode and Node
+...
+@JsonSubTypes({
+        @JsonSubTypes.Type(value = MongoExtractNode.class, name = 
"mongoExtract")
+})
+...
+public abstract class ExtractNode implements Node{...}
+
+...
+@JsonSubTypes({
+        @JsonSubTypes.Type(value = MongoExtractNode.class, name = 
"mongoExtract")
+})
+public interface Node {...}
+```
+
+**Step 3**:Expand the Sort connector and check whether the corresponding 
connector already exists in the (`InLong 
Agentinlong-sort/sort-connectors/mongodb-cdc`) directory. If you haven't 
already,
+you need to refer to the official flink documentation [DataStream 
Connectors](https://nightlies.apache.org/flink/flink-docs-release-1.13/docs/connectors/datastream/overview/#datastream-connectors)
 to extend,
+directly call the existing flink-connector (such 
as`inlong-sort/sort-connectors/mongodb-cdc`) or implement the related connector 
by yourself.
+
+### Extend Load Node
+
+There are three steps to extend an LoadNode:
+
+**Step 1**:Inherit the LoadNode class, the location of the class is:
+```bash
+inlong-sort/sort-common/src/main/java/org/apache/inlong/sort/protocol/node/LoadNode.java
+```
+specify the connector in the implemented LoadNode.
+
+```java
+// Inherit LoadNode class and implement specific classes, such as KafkaLoadNode
+@EqualsAndHashCode(callSuper = true)
+@JsonTypeName("kafkaLoad")
+@Data
+@NoArgsConstructor
+public class KafkaLoadNode extends LoadNode implements Serializable {
+    @Nonnull
+    @JsonProperty("topic")
+    private String topic;
+    ...
+
+    @JsonCreator
+    public KafkaLoadNode(@Nonnull @JsonProperty("topic") String topic, ...) 
{...}
+
+    // configure and use different connectors according to different conditions
+    @Override
+    public Map<String, String> tableOptions() {
+      ...
+        if (format instanceof JsonFormat || format instanceof AvroFormat || 
format instanceof CsvFormat) {
+            if (StringUtils.isEmpty(this.primaryKey)) {
+                // kafka connector
+                options.put("connector", "kafka");
+                options.putAll(format.generateOptions(false));
+            } else {
+                options.put("connector", "upsert-kafka"); // upsert-kafka 
connector
+                options.putAll(format.generateOptions(true));
+            }
+        } else if (format instanceof CanalJsonFormat || format instanceof 
DebeziumJsonFormat) {
+            // kafka-inlong connector
+            options.put("connector", "kafka-inlong");
+            options.putAll(format.generateOptions(false));
+        } else {
+            throw new IllegalArgumentException("kafka load Node format is 
IllegalArgument");
+        }
+        return options;
+    }
+}
+```
+
+**Step 2**:add the Load to JsonSubTypes in ExtractNode and Node
+
+```java
+// add field in JsonSubTypes of LoadNode and Node
+...
+@JsonSubTypes({
+        @JsonSubTypes.Type(value = KafkaLoadNode.class, name = "kafkaLoad")
+})
+...
+public abstract class LoadNode implements Node{...}
+
+...
+@JsonSubTypes({
+        @JsonSubTypes.Type(value = KafkaLoadNode.class, name = "kafkaLoad")
+})
+public interface Node {...}
+```
+
+**Step 3**:Extend the Sort connector, Kafka's sort connector is in 
`inlong-sort/sort-connectors/kafka`.
+
+### Integrate Entrance
+
+To integrate extract and load into the InLong Sort mainstream, you need to 
implement the semantics mentioned in the overview section: group, stream, node, 
etc. The entry class of InLong Sort is in :
+```bash
+inlong-sort/sort-core/src/main/java/org/apache/inlong/sort/Entrance.java
+```
+How to integrate extract and load into InLong Sort can refer to the following 
ut. First, build the corresponding extractnode and loadnode, then build 
noderelation, streaminfo and groupinfo, and finally use FlinkSqlParser to 
execute.
+
+```java
+public class MongoExtractToKafkaLoad extends AbstractTestBase {
+
+    // create MongoExtractNode
+    private MongoExtractNode buildMongoNode() {
+        List<FieldInfo> fields = Arrays.asList(new FieldInfo("name", new 
StringFormatInfo()), ...);
+        return new MongoExtractNode(..., fields, ...);
+    }
+
+    // create KafkaLoadNode
+    private KafkaLoadNode buildAllMigrateKafkaNode() {
+        List<FieldInfo> fields = Arrays.asList(new FieldInfo("name", new 
StringFormatInfo()), ...);
+        List<FieldRelation> relations = Arrays.asList(new FieldRelation(new 
FieldInfo("name", new StringFormatInfo()), ...), ...);
+        CsvFormat csvFormat = new CsvFormat();
+        return new KafkaLoadNode(..., fields, relations, csvFormat, ...);
+    }
+
+    // create NodeRelation
+    private NodeRelation buildNodeRelation(List<Node> inputs, List<Node> 
outputs) {
+        List<String> inputIds = 
inputs.stream().map(Node::getId).collect(Collectors.toList());
+        List<String> outputIds = 
outputs.stream().map(Node::getId).collect(Collectors.toList());
+        return new NodeRelation(inputIds, outputIds);
+    }
+
+    // test the main flow: mongodb to kafka
+    @Test
+    public void testMongoDbToKafka() throws Exception {
+        EnvironmentSettings settings = EnvironmentSettings. ... .build();
+        StreamExecutionEnvironment env = 
StreamExecutionEnvironment.getExecutionEnvironment();
+        ...
+        StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env, 
settings);
+        Node inputNode = buildMongoNode();
+        Node outputNode = buildAllMigrateKafkaNode();
+        StreamInfo streamInfo = new StreamInfo("1", Arrays.asList(inputNode, 
outputNode), ...);
+        GroupInfo groupInfo = new GroupInfo("1", 
Collections.singletonList(streamInfo));
+        FlinkSqlParser parser = FlinkSqlParser.getInstance(tableEnv, 
groupInfo);
+        ParseResult result = parser.parse();
+        Assert.assertTrue(result.tryExecute());
+    }
+}
+```
+
 Additionally, Sort has added two extra interfaces, `InlongMetric` and 
`Metadata`, to support richer semantics.
 
-#### InlongMetric
+## InlongMetric
 If a custom node needs to report Inlong metrics, it must implement the 
`org.apache.inlong.sort.protocol.InlongMetric` interface.
 When Sort parses the configuration, it adds the startup parameter 
`'inlong.metric.labels' = 'groupId={g}&streamId={s}&nodeId={n}'` to the table 
option, which is used to configure Inlong Audit.
 For details, see [How to Integrate Inlong Audit into Custom Connector](#jump1)
 
-#### Metadata
+## Metadata
 If a custom node needs to specify a field as a Flink SQL Metadata field, it 
must implement the `org.apache.inlong.sort.protocol.Metadata` interface.
 Sort will automatically mark the corresponding field as Metadata when parsing 
the configuration.
 
diff --git a/docs/design_and_concept/img/sort_uml.png 
b/docs/development/extension_sort/img/sort_uml.png
similarity index 100%
rename from docs/design_and_concept/img/sort_uml.png
rename to docs/development/extension_sort/img/sort_uml.png
diff --git a/docs/development/extension_transform/_category_.json 
b/docs/development/extension_transform/_category_.json
index aa7e1709b93..9850130353e 100644
--- a/docs/development/extension_transform/_category_.json
+++ b/docs/development/extension_transform/_category_.json
@@ -1,4 +1,4 @@
 {
   "label": "Transform Plugins Extension",
-  "position": 6
+  "position": 7
 }
\ No newline at end of file
diff --git a/docs/development/extention_dataproxy/_category_.json 
b/docs/development/extention_dataproxy/_category_.json
new file mode 100644
index 00000000000..ed1cc16eb23
--- /dev/null
+++ b/docs/development/extention_dataproxy/_category_.json
@@ -0,0 +1,4 @@
+{
+  "label": "DataProxy Plugins Extension",
+  "position": 2
+}
\ No newline at end of file
diff --git a/docs/design_and_concept/how_to_write_plugin_dataproxy.md 
b/docs/development/extention_dataproxy/how_to_write_plugin_dataproxy.md
similarity index 97%
rename from docs/design_and_concept/how_to_write_plugin_dataproxy.md
rename to docs/development/extention_dataproxy/how_to_write_plugin_dataproxy.md
index 7f9aced4628..707c2df0b04 100644
--- a/docs/design_and_concept/how_to_write_plugin_dataproxy.md
+++ b/docs/development/extention_dataproxy/how_to_write_plugin_dataproxy.md
@@ -1,6 +1,6 @@
 ---
-title: DataProxy Plugin
-sidebar_position: 7
+title: DataProxy Plugin Extension
+sidebar_position: 1
 ---
 
 ## Overview
diff --git a/docs/design_and_concept/img/dataproxy_mq_sink.png 
b/docs/development/extention_dataproxy/img/dataproxy_mq_sink.png
similarity index 100%
rename from docs/design_and_concept/img/dataproxy_mq_sink.png
rename to docs/development/extention_dataproxy/img/dataproxy_mq_sink.png
diff --git a/docs/quick_start/data_subscription/_category_.json 
b/docs/quick_start/data_subscription/_category_.json
index 0427ad59648..77d441a3509 100644
--- a/docs/quick_start/data_subscription/_category_.json
+++ b/docs/quick_start/data_subscription/_category_.json
@@ -1,4 +1,4 @@
 {
-  "label": "Data subscription",
+  "label": "Data Subscription",
   "position": 6
 }
\ No newline at end of file
diff --git a/docs/quick_start/data_sync/_category_.json 
b/docs/quick_start/data_sync/_category_.json
deleted file mode 100644
index e0ec5597bfc..00000000000
--- a/docs/quick_start/data_sync/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "label": "Data Synchronization",
-  "position": 2
-}
\ No newline at end of file
diff --git a/docs/quick_start/realtime_data_sync/_category_.json 
b/docs/quick_start/realtime_data_sync/_category_.json
new file mode 100644
index 00000000000..c3f29e1dc79
--- /dev/null
+++ b/docs/quick_start/realtime_data_sync/_category_.json
@@ -0,0 +1,4 @@
+{
+  "label": "Realtime Data Synchronization",
+  "position": 2
+}
\ No newline at end of file
diff --git a/docs/quick_start/data_sync/img/mysql_clickhouse/approve.png 
b/docs/quick_start/realtime_data_sync/img/mysql_clickhouse/approve.png
similarity index 100%
rename from docs/quick_start/data_sync/img/mysql_clickhouse/approve.png
rename to docs/quick_start/realtime_data_sync/img/mysql_clickhouse/approve.png
diff --git a/docs/quick_start/data_sync/img/mysql_clickhouse/audit.png 
b/docs/quick_start/realtime_data_sync/img/mysql_clickhouse/audit.png
similarity index 100%
rename from docs/quick_start/data_sync/img/mysql_clickhouse/audit.png
rename to docs/quick_start/realtime_data_sync/img/mysql_clickhouse/audit.png
diff --git 
a/docs/quick_start/data_sync/img/mysql_clickhouse/clickhouse_datanode.png 
b/docs/quick_start/realtime_data_sync/img/mysql_clickhouse/clickhouse_datanode.png
similarity index 100%
rename from 
docs/quick_start/data_sync/img/mysql_clickhouse/clickhouse_datanode.png
rename to 
docs/quick_start/realtime_data_sync/img/mysql_clickhouse/clickhouse_datanode.png
diff --git a/docs/quick_start/data_sync/img/mysql_clickhouse/group_stream.png 
b/docs/quick_start/realtime_data_sync/img/mysql_clickhouse/group_stream.png
similarity index 100%
rename from docs/quick_start/data_sync/img/mysql_clickhouse/group_stream.png
rename to 
docs/quick_start/realtime_data_sync/img/mysql_clickhouse/group_stream.png
diff --git a/docs/quick_start/data_sync/img/mysql_clickhouse/sink.png 
b/docs/quick_start/realtime_data_sync/img/mysql_clickhouse/sink.png
similarity index 100%
rename from docs/quick_start/data_sync/img/mysql_clickhouse/sink.png
rename to docs/quick_start/realtime_data_sync/img/mysql_clickhouse/sink.png
diff --git a/docs/quick_start/data_sync/img/mysql_clickhouse/sink_data.png 
b/docs/quick_start/realtime_data_sync/img/mysql_clickhouse/sink_data.png
similarity index 100%
rename from docs/quick_start/data_sync/img/mysql_clickhouse/sink_data.png
rename to docs/quick_start/realtime_data_sync/img/mysql_clickhouse/sink_data.png
diff --git a/docs/quick_start/data_sync/img/mysql_clickhouse/sink_fields.png 
b/docs/quick_start/realtime_data_sync/img/mysql_clickhouse/sink_fields.png
similarity index 100%
rename from docs/quick_start/data_sync/img/mysql_clickhouse/sink_fields.png
rename to 
docs/quick_start/realtime_data_sync/img/mysql_clickhouse/sink_fields.png
diff --git a/docs/quick_start/data_sync/img/mysql_clickhouse/source.png 
b/docs/quick_start/realtime_data_sync/img/mysql_clickhouse/source.png
similarity index 100%
rename from docs/quick_start/data_sync/img/mysql_clickhouse/source.png
rename to docs/quick_start/realtime_data_sync/img/mysql_clickhouse/source.png
diff --git a/docs/quick_start/data_sync/img/mysql_clickhouse/source_data.png 
b/docs/quick_start/realtime_data_sync/img/mysql_clickhouse/source_data.png
similarity index 100%
rename from docs/quick_start/data_sync/img/mysql_clickhouse/source_data.png
rename to 
docs/quick_start/realtime_data_sync/img/mysql_clickhouse/source_data.png
diff --git a/docs/quick_start/data_sync/img/mysql_iceberg/approval.png 
b/docs/quick_start/realtime_data_sync/img/mysql_iceberg/approval.png
similarity index 100%
rename from docs/quick_start/data_sync/img/mysql_iceberg/approval.png
rename to docs/quick_start/realtime_data_sync/img/mysql_iceberg/approval.png
diff --git a/docs/quick_start/data_sync/img/mysql_iceberg/audit_iceberg.png 
b/docs/quick_start/realtime_data_sync/img/mysql_iceberg/audit_iceberg.png
similarity index 100%
rename from docs/quick_start/data_sync/img/mysql_iceberg/audit_iceberg.png
rename to 
docs/quick_start/realtime_data_sync/img/mysql_iceberg/audit_iceberg.png
diff --git 
a/docs/quick_start/data_sync/img/mysql_iceberg/create_group_stream.png 
b/docs/quick_start/realtime_data_sync/img/mysql_iceberg/create_group_stream.png
similarity index 100%
rename from docs/quick_start/data_sync/img/mysql_iceberg/create_group_stream.png
rename to 
docs/quick_start/realtime_data_sync/img/mysql_iceberg/create_group_stream.png
diff --git 
a/docs/quick_start/data_sync/img/mysql_iceberg/create_iceberg_datanode.png 
b/docs/quick_start/realtime_data_sync/img/mysql_iceberg/create_iceberg_datanode.png
similarity index 100%
rename from 
docs/quick_start/data_sync/img/mysql_iceberg/create_iceberg_datanode.png
rename to 
docs/quick_start/realtime_data_sync/img/mysql_iceberg/create_iceberg_datanode.png
diff --git 
a/docs/quick_start/data_sync/img/mysql_iceberg/create_stream_sink.png 
b/docs/quick_start/realtime_data_sync/img/mysql_iceberg/create_stream_sink.png
similarity index 100%
rename from docs/quick_start/data_sync/img/mysql_iceberg/create_stream_sink.png
rename to 
docs/quick_start/realtime_data_sync/img/mysql_iceberg/create_stream_sink.png
diff --git 
a/docs/quick_start/data_sync/img/mysql_iceberg/create_stream_source.png 
b/docs/quick_start/realtime_data_sync/img/mysql_iceberg/create_stream_source.png
similarity index 100%
rename from 
docs/quick_start/data_sync/img/mysql_iceberg/create_stream_source.png
rename to 
docs/quick_start/realtime_data_sync/img/mysql_iceberg/create_stream_source.png
diff --git a/docs/quick_start/data_sync/img/mysql_iceberg/result_iceberg.png 
b/docs/quick_start/realtime_data_sync/img/mysql_iceberg/result_iceberg.png
similarity index 100%
rename from docs/quick_start/data_sync/img/mysql_iceberg/result_iceberg.png
rename to 
docs/quick_start/realtime_data_sync/img/mysql_iceberg/result_iceberg.png
diff --git a/docs/quick_start/data_sync/img/mysql_iceberg/result_mysql.png 
b/docs/quick_start/realtime_data_sync/img/mysql_iceberg/result_mysql.png
similarity index 100%
rename from docs/quick_start/data_sync/img/mysql_iceberg/result_mysql.png
rename to docs/quick_start/realtime_data_sync/img/mysql_iceberg/result_mysql.png
diff --git a/docs/quick_start/data_sync/img/mysql_iceberg/success.png 
b/docs/quick_start/realtime_data_sync/img/mysql_iceberg/success.png
similarity index 100%
rename from docs/quick_start/data_sync/img/mysql_iceberg/success.png
rename to docs/quick_start/realtime_data_sync/img/mysql_iceberg/success.png
diff --git a/docs/quick_start/data_sync/img/mysql_starrocks/approve.png 
b/docs/quick_start/realtime_data_sync/img/mysql_starrocks/approve.png
similarity index 100%
rename from docs/quick_start/data_sync/img/mysql_starrocks/approve.png
rename to docs/quick_start/realtime_data_sync/img/mysql_starrocks/approve.png
diff --git a/docs/quick_start/data_sync/img/mysql_starrocks/audit_starrocks.png 
b/docs/quick_start/realtime_data_sync/img/mysql_starrocks/audit_starrocks.png
similarity index 100%
rename from docs/quick_start/data_sync/img/mysql_starrocks/audit_starrocks.png
rename to 
docs/quick_start/realtime_data_sync/img/mysql_starrocks/audit_starrocks.png
diff --git a/docs/quick_start/data_sync/img/mysql_starrocks/create_fields.png 
b/docs/quick_start/realtime_data_sync/img/mysql_starrocks/create_fields.png
similarity index 100%
rename from docs/quick_start/data_sync/img/mysql_starrocks/create_fields.png
rename to 
docs/quick_start/realtime_data_sync/img/mysql_starrocks/create_fields.png
diff --git 
a/docs/quick_start/data_sync/img/mysql_starrocks/create_group_stream.png 
b/docs/quick_start/realtime_data_sync/img/mysql_starrocks/create_group_stream.png
similarity index 100%
rename from 
docs/quick_start/data_sync/img/mysql_starrocks/create_group_stream.png
rename to 
docs/quick_start/realtime_data_sync/img/mysql_starrocks/create_group_stream.png
diff --git a/docs/quick_start/data_sync/img/mysql_starrocks/create_sink.png 
b/docs/quick_start/realtime_data_sync/img/mysql_starrocks/create_sink.png
similarity index 100%
rename from docs/quick_start/data_sync/img/mysql_starrocks/create_sink.png
rename to 
docs/quick_start/realtime_data_sync/img/mysql_starrocks/create_sink.png
diff --git a/docs/quick_start/data_sync/img/mysql_starrocks/create_source.png 
b/docs/quick_start/realtime_data_sync/img/mysql_starrocks/create_source.png
similarity index 100%
rename from docs/quick_start/data_sync/img/mysql_starrocks/create_source.png
rename to 
docs/quick_start/realtime_data_sync/img/mysql_starrocks/create_source.png
diff --git 
a/docs/quick_start/data_sync/img/mysql_starrocks/create_starrocks_datanode.png 
b/docs/quick_start/realtime_data_sync/img/mysql_starrocks/create_starrocks_datanode.png
similarity index 100%
rename from 
docs/quick_start/data_sync/img/mysql_starrocks/create_starrocks_datanode.png
rename to 
docs/quick_start/realtime_data_sync/img/mysql_starrocks/create_starrocks_datanode.png
diff --git a/docs/quick_start/data_sync/img/mysql_starrocks/result_sink.png 
b/docs/quick_start/realtime_data_sync/img/mysql_starrocks/result_sink.png
similarity index 100%
rename from docs/quick_start/data_sync/img/mysql_starrocks/result_sink.png
rename to 
docs/quick_start/realtime_data_sync/img/mysql_starrocks/result_sink.png
diff --git a/docs/quick_start/data_sync/img/mysql_starrocks/result_source.png 
b/docs/quick_start/realtime_data_sync/img/mysql_starrocks/result_source.png
similarity index 100%
rename from docs/quick_start/data_sync/img/mysql_starrocks/result_source.png
rename to 
docs/quick_start/realtime_data_sync/img/mysql_starrocks/result_source.png
diff --git a/docs/quick_start/data_sync/img/mysql_starrocks/success.png 
b/docs/quick_start/realtime_data_sync/img/mysql_starrocks/success.png
similarity index 100%
rename from docs/quick_start/data_sync/img/mysql_starrocks/success.png
rename to docs/quick_start/realtime_data_sync/img/mysql_starrocks/success.png
diff --git a/docs/quick_start/data_sync/img/pulsar_clickhouse/approve.png 
b/docs/quick_start/realtime_data_sync/img/pulsar_clickhouse/approve.png
similarity index 100%
rename from docs/quick_start/data_sync/img/pulsar_clickhouse/approve.png
rename to docs/quick_start/realtime_data_sync/img/pulsar_clickhouse/approve.png
diff --git 
a/docs/quick_start/data_sync/img/pulsar_clickhouse/clickhouse_datanode.png 
b/docs/quick_start/realtime_data_sync/img/pulsar_clickhouse/clickhouse_datanode.png
similarity index 100%
rename from 
docs/quick_start/data_sync/img/pulsar_clickhouse/clickhouse_datanode.png
rename to 
docs/quick_start/realtime_data_sync/img/pulsar_clickhouse/clickhouse_datanode.png
diff --git a/docs/quick_start/data_sync/img/pulsar_clickhouse/group_stream.png 
b/docs/quick_start/realtime_data_sync/img/pulsar_clickhouse/group_stream.png
similarity index 100%
rename from docs/quick_start/data_sync/img/pulsar_clickhouse/group_stream.png
rename to 
docs/quick_start/realtime_data_sync/img/pulsar_clickhouse/group_stream.png
diff --git a/docs/quick_start/data_sync/img/pulsar_clickhouse/sink.png 
b/docs/quick_start/realtime_data_sync/img/pulsar_clickhouse/sink.png
similarity index 100%
rename from docs/quick_start/data_sync/img/pulsar_clickhouse/sink.png
rename to docs/quick_start/realtime_data_sync/img/pulsar_clickhouse/sink.png
diff --git a/docs/quick_start/data_sync/img/pulsar_clickhouse/sink_data.png 
b/docs/quick_start/realtime_data_sync/img/pulsar_clickhouse/sink_data.png
similarity index 100%
rename from docs/quick_start/data_sync/img/pulsar_clickhouse/sink_data.png
rename to 
docs/quick_start/realtime_data_sync/img/pulsar_clickhouse/sink_data.png
diff --git a/docs/quick_start/data_sync/img/pulsar_clickhouse/sink_fields.png 
b/docs/quick_start/realtime_data_sync/img/pulsar_clickhouse/sink_fields.png
similarity index 100%
rename from docs/quick_start/data_sync/img/pulsar_clickhouse/sink_fields.png
rename to 
docs/quick_start/realtime_data_sync/img/pulsar_clickhouse/sink_fields.png
diff --git a/docs/quick_start/data_sync/img/pulsar_clickhouse/source.png 
b/docs/quick_start/realtime_data_sync/img/pulsar_clickhouse/source.png
similarity index 100%
rename from docs/quick_start/data_sync/img/pulsar_clickhouse/source.png
rename to docs/quick_start/realtime_data_sync/img/pulsar_clickhouse/source.png
diff --git a/docs/quick_start/data_sync/mysql_clickhouse_example.md 
b/docs/quick_start/realtime_data_sync/mysql_clickhouse_example.md
similarity index 100%
rename from docs/quick_start/data_sync/mysql_clickhouse_example.md
rename to docs/quick_start/realtime_data_sync/mysql_clickhouse_example.md
diff --git a/docs/quick_start/data_sync/mysql_iceberg_example.md 
b/docs/quick_start/realtime_data_sync/mysql_iceberg_example.md
similarity index 100%
rename from docs/quick_start/data_sync/mysql_iceberg_example.md
rename to docs/quick_start/realtime_data_sync/mysql_iceberg_example.md
diff --git a/docs/quick_start/data_sync/mysql_starrocks_example.md 
b/docs/quick_start/realtime_data_sync/mysql_starrocks_example.md
similarity index 100%
rename from docs/quick_start/data_sync/mysql_starrocks_example.md
rename to docs/quick_start/realtime_data_sync/mysql_starrocks_example.md
diff --git a/docs/quick_start/data_sync/pulsar_clickhouse_example.md 
b/docs/quick_start/realtime_data_sync/pulsar_clickhouse_example.md
similarity index 100%
rename from docs/quick_start/data_sync/pulsar_clickhouse_example.md
rename to docs/quick_start/realtime_data_sync/pulsar_clickhouse_example.md
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current.json 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current.json
index 3d3ac0bfa5e..485ede159c4 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current.json
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current.json
@@ -15,8 +15,8 @@
     "message": "数据接入",
     "description": "The label for category Data Ingestion in sidebar 
tutorialSidebar"
   },
-  "sidebar.tutorialSidebar.category.Data Synchronization": {
-    "message": "数据同步",
+  "sidebar.tutorialSidebar.category.Realtime Data Synchronization": {
+    "message": "实时数据同步",
     "description": "The label for category Data Synchronization in sidebar 
tutorialSidebar"
   },
   "sidebar.tutorialSidebar.category.Offline Data Synchronization": {
@@ -27,6 +27,10 @@
     "message": "HTTP 消息上报",
     "description": "The label for category HTTP Report in sidebar 
tutorialSidebar"
   },
+  "sidebar.tutorialSidebar.category.Data Subscription": {
+    "message": "数据订阅",
+    "description": "The label for category Data Subscription in sidebar 
tutorialSidebar"
+  },
   "sidebar.tutorialSidebar.category.Transform": {
     "message": "Transform",
     "description": "The label for category Transform in sidebar 
tutorialSidebar"
@@ -119,6 +123,10 @@
     "message": "Agent 插件扩展",
     "description": "The label for Agent Plugins Extension in sidebar 
tutorialSidebar"
   },
+  "sidebar.tutorialSidebar.category.DataProxy Plugins Extension": {
+    "message": "DataProxy 插件扩展",
+    "description": "The label for DataProxy Plugins Extension in sidebar 
tutorialSidebar"
+  },
   "sidebar.tutorialSidebar.category.Manager Plugins Extension": {
     "message": "Manager 插件扩展",
     "description": "The label for Manager Plugins Extension in sidebar 
tutorialSidebar"
@@ -131,12 +139,12 @@
     "message": "Transform 插件扩展",
     "description": "The label for Transform Plugins Extension in sidebar 
tutorialSidebar"
   },
+  "sidebar.tutorialSidebar.category.Dashboard Plugins Extension": {
+    "message": "Dashboard 插件扩展",
+    "description": "The label for Dashboard Plugins Extension in sidebar 
tutorialSidebar"
+  },
   "sidebar.tutorialSidebar.category.Administration": {
     "message": "Administration",
     "description": "The label for Administration in sidebar tutorialSidebar"
-  },
-  "sidebar.tutorialSidebar.category.Cluster Management": {
-    "message": "Cluster Management",
-    "description": "The label for cluster management in sidebar 
tutorialSidebar"
   }
 }
\ No newline at end of file
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/cluster_management/agent_management.md
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/agent_management.md
similarity index 98%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/cluster_management/agent_management.md
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/agent_management.md
index 6028b5c37b9..4c3260f7502 100644
--- 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/cluster_management/agent_management.md
+++ 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/agent_management.md
@@ -1,6 +1,6 @@
 ---
 title: Agent 管理
-sidebar_position: 1
+sidebar_position: 8
 ---
 
 ## 概述
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/cluster_management/img/agent_batch.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/img/agent_batch.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/cluster_management/img/agent_batch.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/img/agent_batch.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/cluster_management/img/agent_install.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/img/agent_install.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/cluster_management/img/agent_install.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/img/agent_install.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/cluster_management/img/agent_modify_delete.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/img/agent_modify_delete.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/cluster_management/img/agent_modify_delete.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/img/agent_modify_delete.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/cluster_management/img/agent_package_modify_delete.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/img/agent_package_modify_delete.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/cluster_management/img/agent_package_modify_delete.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/img/agent_package_modify_delete.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/cluster_management/img/agent_package_new.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/img/agent_package_new.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/cluster_management/img/agent_package_new.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/img/agent_package_new.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/cluster_management/img/agent_version_modify_delete.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/img/agent_version_modify_delete.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/cluster_management/img/agent_version_modify_delete.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/img/agent_version_modify_delete.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/cluster_management/img/agent_version_new.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/img/agent_version_new.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/cluster_management/img/agent_version_new.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/administration/img/agent_version_new.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/design_and_concept/how_to_extend_data_node_for_sort.md
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/design_and_concept/how_to_extend_data_node_for_sort.md
deleted file mode 100644
index 470c504db0b..00000000000
--- 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/design_and_concept/how_to_extend_data_node_for_sort.md
+++ /dev/null
@@ -1,222 +0,0 @@
----
-title: Sort 插件
-sidebar_position: 4
----
-
-## 总览
-
-InLong Sort 是一个基于 Apache Flink SQL 的 ETL 服务。Flink SQL 强大的表达能力带来的高可扩展性、灵活性,基本上 
Flink SQL 支持的语意,InLong Sort 都支持。
-当 Flink SQL 内置的函数不满足需求时,还可通过 UDF 来扩展。这对于曾经使用过 SQL 尤其是 Flink SQL 的开发者非常友好。
-
-本文介绍如何在 InLong Sort 中扩展一个新的 source(在 InLong 中抽象为 Extract Node)或一个新的 
sink(在InLong中抽象为 Load Node )。
-InLong Sort 架构的 UML 对象关系图如下:
-
-![sort_uml](img/sort_uml.png)
-
-其中各个组件的概念为:
-
-| **名称**          | **描述**                                                   |
-| ----------------- | 
--------------------------------------------------------- |
-| Group             | 数据流组,包含多个数据流,一个 Group 代表一个数据接入             |
-| Stream            | 数据流,一个数据流有具体的流向                                 |
-| GroupInfo         | Sort 中对数据流向的封装,一个 GroupInfo 可包含多个 DataFlowInfo |
-| StreamInfo        | Sort 中数据流向的抽象,包含该数据流的各种来源、转换、去向等        |
-| Node              | 数据同步中数据源、数据转换、数据去向的抽象                       |
-| ExtractNode       | 数据同步的来源端抽象                                         |
-| TransformNode     | 数据同步的转换过程抽象                                       |
-| LoadNode          | 数据同步的去向端抽象                                         |
-| NodeRelationShip  | 数据同步中各个节点关系抽象                                    |
-| FieldRelationShip | 数据同步中上下游节点字段间关系的抽象                            |
-| FieldInfo         | 节点字段                                                   |
-| MetaFieldInfo     | 节点 Meta 字段                                             |
-| Function          | 转换函数的抽象                                              |
-| FunctionParam     | 函数的入参抽象                                              |
-| ConstantParam     | 常量参数                                                   |
-
-扩展 Extract Node 或 Load Node 需要做的工作是:
-
-- 继承 Node 类(例如 MyExtractNode),构建具体的 extract 或 load 使用逻辑;
-- 在具体的 Node 类(例如 MyExtractNode)中,指定对应 Flink connector;
-- 在具体的 ETL 实现逻辑中使用具体的 Node 类(例如 MyExtractNode)。
-
-其中第二步中可以使用已有的 Flink Connector,或者用户自己扩展,如何扩展 Flink Connector 请参考 Flink 
官方文档[DataStream Connectors 
](https://nightlies.apache.org/flink/flink-docs-release-1.13/docs/connectors/datastream/overview/#datastream-connectors).
-
-## 扩展 Extract Node
-
-扩展一个 ExtractNode 分为三个步骤:
-
-**第一步**:继承 ExtractNode 类,类的位置在:
-```bash
-inlong-sort/sort-common/src/main/java/org/apache/inlong/sort/protocol/node/ExtractNode.java
-```
-在实现的 ExtractNode 中指定 connector;
-
-```Java
-// 继承 ExtractNode 类,实现具体的类,例如 MongoExtractNode
-@EqualsAndHashCode(callSuper = true)
-@JsonTypeName("MongoExtract")
-@Data
-public class MongoExtractNode extends ExtractNode implements Serializable {
-    @JsonInclude(Include.NON_NULL)
-    @JsonProperty("primaryKey")
-    private String primaryKey;
-    ...
-
-    @JsonCreator
-    public MongoExtractNode(@JsonProperty("id") String id, ...) { ... }
-
-    @Override
-    public Map<String, String> tableOptions() {
-        Map<String, String> options = super.tableOptions();
-       // 配置指定的 connector,这里指定的是 mongodb-cdc
-        options.put("connector", "mongodb-cdc");
-        ...
-        return options;
-    }
-}
-```
-
-**第二步**:在 ExtractNode 和 Node 中的 JsonSubTypes 添加该 Extract
-
-```java
-// 在 ExtractNode 和 Node 的 JsonSubTypes 中添加字段
-...
-@JsonSubTypes({
-        @JsonSubTypes.Type(value = MongoExtractNode.class, name = 
"mongoExtract")
-})
-...
-public abstract class ExtractNode implements Node{...}
-
-...
-@JsonSubTypes({
-        @JsonSubTypes.Type(value = MongoExtractNode.class, name = 
"mongoExtract")
-})
-public interface Node {...}
-```
-
-**第三步**:扩展 Sort 
Connector,查看此(`inlong-sort/sort-connectors/mongodb-cdc`)目录下是否已经存在对应的 
connector。如果没有,则需要参考 Flink 官方文档 [DataStream Connectors 
](https://nightlies.apache.org/flink/flink-docs-release-1.13/docs/connectors/datastream/overview/#datastream-connectors)
 来扩展,
-调用已有的 Flink-connector(例如`inlong-sort/sort-connectors/mongodb-cdc`)或自行实现相关的 
connector 均可。
-
-## 扩展 Load Node
-
-扩展一个 LoadNode 分为三个步骤:
-
-**第一步**:继承 LoadNode 类,类的位置在:
-```bash
-inlong-sort/sort-common/src/main/java/org/apache/inlong/sort/protocol/node/LoadNode.java
-```
-在实现的LoadNode 中指定 connector;
-
-```java
-// 继承 LoadNode 类,实现具体的类,例如 KafkaLoadNode
-@EqualsAndHashCode(callSuper = true)
-@JsonTypeName("kafkaLoad")
-@Data
-@NoArgsConstructor
-public class KafkaLoadNode extends LoadNode implements Serializable {
-    @Nonnull
-    @JsonProperty("topic")
-    private String topic;
-    ...
-
-    @JsonCreator
-    public KafkaLoadNode(@Nonnull @JsonProperty("topic") String topic, ...) 
{...}
-
-    // 根据不同的条件配置使用不同的 connector
-    @Override
-    public Map<String, String> tableOptions() {
-        ...
-        if (format instanceof JsonFormat || format instanceof AvroFormat || 
format instanceof CsvFormat) {
-            if (StringUtils.isEmpty(this.primaryKey)) {
-                // kafka connector
-                options.put("connector", "kafka");
-                options.putAll(format.generateOptions(false));
-            } else {
-                // upsert-kafka connector
-                options.put("connector", "upsert-kafka");
-                options.putAll(format.generateOptions(true));
-            }
-        } else if (format instanceof CanalJsonFormat || format instanceof 
DebeziumJsonFormat) {
-            // kafka-inlong connector
-            options.put("connector", "kafka-inlong");
-            options.putAll(format.generateOptions(false));
-        } else {
-            throw new IllegalArgumentException("kafka load Node format is 
IllegalArgument");
-        }
-        return options;
-    }
-}
-```
-
-**第二步**:在 LoadNode 和 Node 中的 JsonSubTypes 添加该 Load
-
-```java
-// 在 LoadNode 和 Node 的 JsonSubTypes 中添加字段
-...
-@JsonSubTypes({
-        @JsonSubTypes.Type(value = KafkaLoadNode.class, name = "kafkaLoad")
-})
-...
-public abstract class LoadNode implements Node{...}
-
-...
-@JsonSubTypes({
-        @JsonSubTypes.Type(value = KafkaLoadNode.class, name = "kafkaLoad")
-})
-public interface Node {...}
-```
-
-**第三步**:扩展 Sort Connector,Kafka 的 sort connector 在 
`inlong-sort/sort-connectors/kafka` 目录下。
-
-## 集成到 Entrance
-
-将 Extract 和 Load 集成到 InLong Sort 主流程中,需要构建总览小节中提到的语意:Group、Stream、Node 等。
-InLong Sort 的入口类在:
-```bash
-inlong-sort/sort-core/src/main/java/org/apache/inlong/sort/Entrance.java
-```
-
-Extract 和 Load 如何集成至 InLong Sort,可参考下面的 UT,首先构建对应的 ExtractNode、LoadNode,再构建 
NodeRelation、StreamInfo、GroupInfo,最后通过 FlinkSqlParser 执行。
-
-```java
-public class MongoExtractToKafkaLoad extends AbstractTestBase {
-
-    // 构建 MongoExtractNode
-    private MongoExtractNode buildMongoNode() {
-        List<FieldInfo> fields = Arrays.asList(new FieldInfo("name", new 
StringFormatInfo()), ...);
-        return new MongoExtractNode(..., fields, ...);
-    }
-
-    // 构建 KafkaLoadNode
-    private KafkaLoadNode buildAllMigrateKafkaNode() {
-        List<FieldInfo> fields = Arrays.asList(new FieldInfo("name", new 
StringFormatInfo()), ...);
-        List<FieldRelation> relations = Arrays.asList(new FieldRelation(new 
FieldInfo("name", new StringFormatInfo()), ...), ...);
-        CsvFormat csvFormat = new CsvFormat();
-        return new KafkaLoadNode(..., fields, relations, csvFormat, ...);
-    }
-
-    // 构建 NodeRelation
-    private NodeRelation buildNodeRelation(List<Node> inputs, List<Node> 
outputs) {
-        List<String> inputIds = 
inputs.stream().map(Node::getId).collect(Collectors.toList());
-        List<String> outputIds = 
outputs.stream().map(Node::getId).collect(Collectors.toList());
-        return new NodeRelation(inputIds, outputIds);
-    }
-
-    // 测试主流程 MongoDB to Kafka
-    @Test
-    public void testMongoDbToKafka() throws Exception {
-        EnvironmentSettings settings = EnvironmentSettings. ... .build();
-        StreamExecutionEnvironment env = 
StreamExecutionEnvironment.getExecutionEnvironment();
-       ...
-        StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env, 
settings);
-        Node inputNode = buildMongoNode();
-        Node outputNode = buildAllMigrateKafkaNode();
-        StreamInfo streamInfo = new StreamInfo("1", Arrays.asList(inputNode, 
outputNode), ...);
-        GroupInfo groupInfo = new GroupInfo("1", 
Collections.singletonList(streamInfo));
-        FlinkSqlParser parser = FlinkSqlParser.getInstance(tableEnv, 
groupInfo);
-        ParseResult result = parser.parse();
-        Assert.assertTrue(result.tryExecute());
-    }
-}
-```
-
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/design_and_concept/how_to_write_plugin_dashboard.md
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/extension_dashboard/how_to_write_plugin_dashboard.md
similarity index 98%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/design_and_concept/how_to_write_plugin_dashboard.md
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/development/extension_dashboard/how_to_write_plugin_dashboard.md
index eb17aa09da5..5b32cad523d 100644
--- 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/design_and_concept/how_to_write_plugin_dashboard.md
+++ 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/extension_dashboard/how_to_write_plugin_dashboard.md
@@ -1,6 +1,6 @@
 ---
-title: Dashboard 插件
-sidebar_position: 5
+title: Dashboard 插件扩展
+sidebar_position: 1
 ---
 
 ## 总览
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/design_and_concept/img/dashboard_plugin.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/extension_dashboard/img/dashboard_plugin.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/design_and_concept/img/dashboard_plugin.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/development/extension_dashboard/img/dashboard_plugin.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/design_and_concept/how_to_write_plugin_dataproxy.md
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/extension_dataproxy/how_to_write_plugin_dataproxy.md
similarity index 98%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/design_and_concept/how_to_write_plugin_dataproxy.md
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/development/extension_dataproxy/how_to_write_plugin_dataproxy.md
index 6cdc32766d3..698f1b3a73b 100644
--- 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/design_and_concept/how_to_write_plugin_dataproxy.md
+++ 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/extension_dataproxy/how_to_write_plugin_dataproxy.md
@@ -1,6 +1,6 @@
 ---
-title: DataProxy 插件
-sidebar_position: 7
+title: DataProxy 插件扩展
+sidebar_position: 1
 ---
 
 ## 总览
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/design_and_concept/img/dataproxy_mq_sink.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/extension_dataproxy/img/dataproxy_mq_sink.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/design_and_concept/img/dataproxy_mq_sink.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/development/extension_dataproxy/img/dataproxy_mq_sink.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/design_and_concept/how_to_extend_data_node_for_manager.md
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/extension_manager/inlong_manger_data_node_extension.md
similarity index 80%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/design_and_concept/how_to_extend_data_node_for_manager.md
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/development/extension_manager/inlong_manger_data_node_extension.md
index 8e97526d4b8..5f76a7466d5 100644
--- 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/design_and_concept/how_to_extend_data_node_for_manager.md
+++ 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/extension_manager/inlong_manger_data_node_extension.md
@@ -1,17 +1,17 @@
 ---
-title: Manager 插件
-sidebar_position: 6
+title: Manager 自定义数据节点
+sidebar_position: 3
 ---
 
 ## 总览
 
 Inlong 设计初衷即是为了在不同数据源之间创建数据流,截止目前,Inlong 已经支持多种常用数据源的读取和写入,如 **MySQL**, 
**Apache Kafka**, **ClickHouse** 等,
-详细内容可参考 [数据节点](data_node/extract_node/overview.md)。 InLong 的每种数据节点,支持通过 
Manager 提供统一的管理,以简化用户的使用。
+详细内容可参考 [数据节点](../../data_node/extract_node/overview.md)。 InLong 的每种数据节点,支持通过 
Manager 提供统一的管理,以简化用户的使用。
 本文介绍通过 Manager 如何扩展一个新的数据节点,实现提供服务。
 
 ## 扩展 Extract Node
  
-- 首先需要在 Sort 组件内支持该数据源,详情参考 [Sort 
插件](design_and_concept/how_to_extend_data_node_for_sort.md)
+- 首先需要在 Sort 组件内支持该数据源,详情参考 [Sort 插件](../extension_sort/extension_connector.md)
 - 在枚举类`org.apache.inlong.common.enums.TaskTypeEnum`中增加对应的枚举
 - 在常量类`org.apache.inlong.manager.common.consts.SourceType`中同样增加对应常量
 - 在`org.apache.inlong.manager.common.pojo.source`路径下创建文件夹,创建对应实体类
@@ -20,7 +20,7 @@ Inlong 设计初衷即是为了在不同数据源之间创建数据流,截止
 
 ## 扩展 Load Node
 
-- 首先需要在 Sort 组件内支持该数据源,详情参考 [Sort 
插件](design_and_concept/how_to_extend_data_node_for_sort.md)
+- 首先需要在 Sort 组件内支持该数据源,详情参考 [Sort 插件](../extension_sort/extension_connector.md)
 - 在常量类`org.apache.inlong.manager.common.consts.SinkType`中增加对应常量
 - 在`org.apache.inlong.manager.common.pojo.sink`路径下创建文件夹, 创建对应实体类
 - 在`org.apache.inlong.manager.service.sink`路径下创建对应工具类
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/extension_sort/extension_connector.md
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/extension_sort/extension_connector.md
index 4a2faebacfd..59012fb2d8d 100644
--- 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/extension_sort/extension_connector.md
+++ 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/extension_sort/extension_connector.md
@@ -3,11 +3,40 @@ title: Sort 扩展 Connector
 sidebar_position: 1
 ---
 
-# 如何扩展 Extract Node 和 Load Node 类型
+# Sort 扩展 Connector
 
-## 扩展 Extract & Load Node
+## 总览
+
+InLong Sort 是一个基于 Apache Flink SQL 的 ETL 服务。Flink SQL 强大的表达能力带来的高可扩展性、灵活性,基本上 
Flink SQL 支持的语意,InLong Sort 都支持。
+当 Flink SQL 内置的函数不满足需求时,还可通过 UDF 来扩展。这对于曾经使用过 SQL 尤其是 Flink SQL 的开发者非常友好。
+
+本文介绍如何在 InLong Sort 中扩展一个新的 source(在 InLong 中抽象为 Extract Node)或一个新的 
sink(在InLong中抽象为 Load Node )。
+InLong Sort 架构的 UML 对象关系图如下:
+
+![sort_uml](img/sort_uml.png)
 
-### 简介
+其中各个组件的概念为:
+
+| **名称**          | **描述**                                                   |
+| ----------------- | 
--------------------------------------------------------- |
+| Group             | 数据流组,包含多个数据流,一个 Group 代表一个数据接入             |
+| Stream            | 数据流,一个数据流有具体的流向                                 |
+| GroupInfo         | Sort 中对数据流向的封装,一个 GroupInfo 可包含多个 DataFlowInfo |
+| StreamInfo        | Sort 中数据流向的抽象,包含该数据流的各种来源、转换、去向等        |
+| Node              | 数据同步中数据源、数据转换、数据去向的抽象                       |
+| ExtractNode       | 数据同步的来源端抽象                                         |
+| TransformNode     | 数据同步的转换过程抽象                                       |
+| LoadNode          | 数据同步的去向端抽象                                         |
+| NodeRelationShip  | 数据同步中各个节点关系抽象                                    |
+| FieldRelationShip | 数据同步中上下游节点字段间关系的抽象                            |
+| FieldInfo         | 节点字段                                                   |
+| MetaFieldInfo     | 节点 Meta 字段                                             |
+| Function          | 转换函数的抽象                                              |
+| FunctionParam     | 函数的入参抽象                                              |
+| ConstantParam     | 常量参数                                                   |
+
+
+## 扩展 Extract & Load Node
 
 Extract 节点是基于 <a href="https://flink.apache.org/";>Apache Flink<sup>®</sup></a> 
的
 Source Connectors 用于从不同的源系统抽取数据。
@@ -34,16 +63,194 @@ Apache InLong Sort 启动时通过将一组 Extract 和 Load Node 配置翻译
 | getPrimaryKey      | 获取主键             | null                     |
 | getPartitionFields | 获取分区字段           | null                     | 
 
+### 扩展 ExtractNode
+扩展一个 ExtractNode 分为三个步骤:
+
+**第一步**:继承 ExtractNode 类,类的位置在:
+```bash
+inlong-sort/sort-common/src/main/java/org/apache/inlong/sort/protocol/node/ExtractNode.java
+```
+在实现的 ExtractNode 中指定 connector;
+
+```Java
+// 继承 ExtractNode 类,实现具体的类,例如 MongoExtractNode
+@EqualsAndHashCode(callSuper = true)
+@JsonTypeName("MongoExtract")
+@Data
+public class MongoExtractNode extends ExtractNode implements Serializable {
+    @JsonInclude(Include.NON_NULL)
+    @JsonProperty("primaryKey")
+    private String primaryKey;
+    ...
+
+    @JsonCreator
+    public MongoExtractNode(@JsonProperty("id") String id, ...) { ... }
+
+    @Override
+    public Map<String, String> tableOptions() {
+        Map<String, String> options = super.tableOptions();
+       // 配置指定的 connector,这里指定的是 mongodb-cdc
+        options.put("connector", "mongodb-cdc");
+        ...
+        return options;
+    }
+}
+```
+
+**第二步**:在 ExtractNode 和 Node 中的 JsonSubTypes 添加该 Extract
+
+```java
+// 在 ExtractNode 和 Node 的 JsonSubTypes 中添加字段
+...
+@JsonSubTypes({
+        @JsonSubTypes.Type(value = MongoExtractNode.class, name = 
"mongoExtract")
+})
+...
+public abstract class ExtractNode implements Node{...}
+
+...
+@JsonSubTypes({
+        @JsonSubTypes.Type(value = MongoExtractNode.class, name = 
"mongoExtract")
+})
+public interface Node {...}
+```
+
+**第三步**:扩展 Sort 
Connector,查看此(`inlong-sort/sort-connectors/mongodb-cdc`)目录下是否已经存在对应的 
connector。如果没有,则需要参考 Flink 官方文档 [DataStream Connectors 
](https://nightlies.apache.org/flink/flink-docs-release-1.13/docs/connectors/datastream/overview/#datastream-connectors)
 来扩展,
+调用已有的 Flink-connector(例如`inlong-sort/sort-connectors/mongodb-cdc`)或自行实现相关的 
connector 均可。
+
+### 扩展 Load Node
+
+扩展一个 LoadNode 分为三个步骤:
+
+**第一步**:继承 LoadNode 类,类的位置在:
+```bash
+inlong-sort/sort-common/src/main/java/org/apache/inlong/sort/protocol/node/LoadNode.java
+```
+在实现的LoadNode 中指定 connector;
+
+```java
+// 继承 LoadNode 类,实现具体的类,例如 KafkaLoadNode
+@EqualsAndHashCode(callSuper = true)
+@JsonTypeName("kafkaLoad")
+@Data
+@NoArgsConstructor
+public class KafkaLoadNode extends LoadNode implements Serializable {
+    @Nonnull
+    @JsonProperty("topic")
+    private String topic;
+    ...
+
+    @JsonCreator
+    public KafkaLoadNode(@Nonnull @JsonProperty("topic") String topic, ...) 
{...}
+
+    // 根据不同的条件配置使用不同的 connector
+    @Override
+    public Map<String, String> tableOptions() {
+        ...
+        if (format instanceof JsonFormat || format instanceof AvroFormat || 
format instanceof CsvFormat) {
+            if (StringUtils.isEmpty(this.primaryKey)) {
+                // kafka connector
+                options.put("connector", "kafka");
+                options.putAll(format.generateOptions(false));
+            } else {
+                // upsert-kafka connector
+                options.put("connector", "upsert-kafka");
+                options.putAll(format.generateOptions(true));
+            }
+        } else if (format instanceof CanalJsonFormat || format instanceof 
DebeziumJsonFormat) {
+            // kafka-inlong connector
+            options.put("connector", "kafka-inlong");
+            options.putAll(format.generateOptions(false));
+        } else {
+            throw new IllegalArgumentException("kafka load Node format is 
IllegalArgument");
+        }
+        return options;
+    }
+}
+```
+
+**第二步**:在 LoadNode 和 Node 中的 JsonSubTypes 添加该 Load
+
+```java
+// 在 LoadNode 和 Node 的 JsonSubTypes 中添加字段
+...
+@JsonSubTypes({
+        @JsonSubTypes.Type(value = KafkaLoadNode.class, name = "kafkaLoad")
+})
+...
+public abstract class LoadNode implements Node{...}
+
+...
+@JsonSubTypes({
+        @JsonSubTypes.Type(value = KafkaLoadNode.class, name = "kafkaLoad")
+})
+public interface Node {...}
+```
+
+**第三步**:扩展 Sort Connector,Kafka 的 sort connector 在 
`inlong-sort/sort-connectors/kafka` 目录下。
+
+### 集成到 Entrance
+
+将 Extract 和 Load 集成到 InLong Sort 主流程中。
+InLong Sort 的入口类在:
+```bash
+inlong-sort/sort-core/src/main/java/org/apache/inlong/sort/Entrance.java
+```
+
+Extract 和 Load 如何集成至 InLong Sort,可参考下面的 UT,首先构建对应的 ExtractNode、LoadNode,再构建 
NodeRelation、StreamInfo、GroupInfo,最后通过 FlinkSqlParser 执行。
+
+```java
+public class MongoExtractToKafkaLoad extends AbstractTestBase {
+
+    // 构建 MongoExtractNode
+    private MongoExtractNode buildMongoNode() {
+        List<FieldInfo> fields = Arrays.asList(new FieldInfo("name", new 
StringFormatInfo()), ...);
+        return new MongoExtractNode(..., fields, ...);
+    }
+
+    // 构建 KafkaLoadNode
+    private KafkaLoadNode buildAllMigrateKafkaNode() {
+        List<FieldInfo> fields = Arrays.asList(new FieldInfo("name", new 
StringFormatInfo()), ...);
+        List<FieldRelation> relations = Arrays.asList(new FieldRelation(new 
FieldInfo("name", new StringFormatInfo()), ...), ...);
+        CsvFormat csvFormat = new CsvFormat();
+        return new KafkaLoadNode(..., fields, relations, csvFormat, ...);
+    }
+
+    // 构建 NodeRelation
+    private NodeRelation buildNodeRelation(List<Node> inputs, List<Node> 
outputs) {
+        List<String> inputIds = 
inputs.stream().map(Node::getId).collect(Collectors.toList());
+        List<String> outputIds = 
outputs.stream().map(Node::getId).collect(Collectors.toList());
+        return new NodeRelation(inputIds, outputIds);
+    }
+
+    // 测试主流程 MongoDB to Kafka
+    @Test
+    public void testMongoDbToKafka() throws Exception {
+        EnvironmentSettings settings = EnvironmentSettings. ... .build();
+        StreamExecutionEnvironment env = 
StreamExecutionEnvironment.getExecutionEnvironment();
+       ...
+        StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env, 
settings);
+        Node inputNode = buildMongoNode();
+        Node outputNode = buildAllMigrateKafkaNode();
+        StreamInfo streamInfo = new StreamInfo("1", Arrays.asList(inputNode, 
outputNode), ...);
+        GroupInfo groupInfo = new GroupInfo("1", 
Collections.singletonList(streamInfo));
+        FlinkSqlParser parser = FlinkSqlParser.getInstance(tableEnv, 
groupInfo);
+        ParseResult result = parser.parse();
+        Assert.assertTrue(result.tryExecute());
+    }
+}
+```
+
 同时,Sort 还增加了 `InlongMetric` 和 `Metadata` 两个额外的接口用来支持更丰富的语义。
 
-#### InlongMetric
+## InlongMetric
 如果自定义节点需要上报 Inlong 指标,则需要实现 `org.apache.inlong.sort.protocol.InlongMetric` 接口。
 Inlong Sort 解析配置时会向 table option 中增加 
 `'inlong.metric.labels' = 'groupId={g}&streamId={s}&nodeId={n}'` 启动参数,并以此来配置 
Inlong Audit。
 详情请查看
 [如何集成 Inlong Audit 到自定义 Connector](#jump1)
 
-#### Metadata
+## Metadata
 如果自定义节点需要指定某个字段为 Flink SQL 的 Metadata 字段,则需要实现 
`org.apache.inlong.sort.protocol.Metadata` 接口。
 Inlong Sort 解析配置时会自动将对应的字段标记为 Metadata。
 
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/design_and_concept/img/sort_uml.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/extension_sort/img/sort_uml.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/design_and_concept/img/sort_uml.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/development/extension_sort/img/sort_uml.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_clickhouse/approve.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_clickhouse/approve.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_clickhouse/approve.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_clickhouse/approve.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_clickhouse/audit.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_clickhouse/audit.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_clickhouse/audit.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_clickhouse/audit.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_clickhouse/clickhouse_datanode.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_clickhouse/clickhouse_datanode.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_clickhouse/clickhouse_datanode.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_clickhouse/clickhouse_datanode.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_clickhouse/group_stream.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_clickhouse/group_stream.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_clickhouse/group_stream.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_clickhouse/group_stream.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_clickhouse/sink.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_clickhouse/sink.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_clickhouse/sink.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_clickhouse/sink.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_clickhouse/sink_data.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_clickhouse/sink_data.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_clickhouse/sink_data.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_clickhouse/sink_data.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_clickhouse/sink_fields.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_clickhouse/sink_fields.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_clickhouse/sink_fields.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_clickhouse/sink_fields.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_clickhouse/source.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_clickhouse/source.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_clickhouse/source.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_clickhouse/source.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_clickhouse/source_data.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_clickhouse/source_data.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_clickhouse/source_data.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_clickhouse/source_data.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_iceberg/approval.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_iceberg/approval.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_iceberg/approval.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_iceberg/approval.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_iceberg/audit_iceberg.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_iceberg/audit_iceberg.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_iceberg/audit_iceberg.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_iceberg/audit_iceberg.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_iceberg/create_group_stream.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_iceberg/create_group_stream.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_iceberg/create_group_stream.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_iceberg/create_group_stream.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_iceberg/create_iceberg_datanode.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_iceberg/create_iceberg_datanode.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_iceberg/create_iceberg_datanode.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_iceberg/create_iceberg_datanode.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_iceberg/create_stream_sink.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_iceberg/create_stream_sink.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_iceberg/create_stream_sink.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_iceberg/create_stream_sink.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_iceberg/create_stream_source.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_iceberg/create_stream_source.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_iceberg/create_stream_source.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_iceberg/create_stream_source.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_iceberg/result_iceberg.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_iceberg/result_iceberg.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_iceberg/result_iceberg.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_iceberg/result_iceberg.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_iceberg/result_mysql.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_iceberg/result_mysql.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_iceberg/result_mysql.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_iceberg/result_mysql.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_iceberg/success.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_iceberg/success.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_iceberg/success.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_iceberg/success.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_starrocks/approve.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_starrocks/approve.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_starrocks/approve.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_starrocks/approve.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_starrocks/audit_starrocks.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_starrocks/audit_starrocks.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_starrocks/audit_starrocks.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_starrocks/audit_starrocks.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_starrocks/create_fields.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_starrocks/create_fields.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_starrocks/create_fields.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_starrocks/create_fields.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_starrocks/create_group_stream.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_starrocks/create_group_stream.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_starrocks/create_group_stream.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_starrocks/create_group_stream.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_starrocks/create_sink.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_starrocks/create_sink.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_starrocks/create_sink.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_starrocks/create_sink.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_starrocks/create_source.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_starrocks/create_source.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_starrocks/create_source.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_starrocks/create_source.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_starrocks/create_starrocks_datanode.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_starrocks/create_starrocks_datanode.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_starrocks/create_starrocks_datanode.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_starrocks/create_starrocks_datanode.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_starrocks/result_sink.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_starrocks/result_sink.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_starrocks/result_sink.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_starrocks/result_sink.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_starrocks/result_source.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_starrocks/result_source.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_starrocks/result_source.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_starrocks/result_source.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_starrocks/success.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_starrocks/success.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/mysql_starrocks/success.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/mysql_starrocks/success.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/pulsar_clickhouse/approve.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/pulsar_clickhouse/approve.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/pulsar_clickhouse/approve.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/pulsar_clickhouse/approve.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/pulsar_clickhouse/clickhouse_datanode.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/pulsar_clickhouse/clickhouse_datanode.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/pulsar_clickhouse/clickhouse_datanode.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/pulsar_clickhouse/clickhouse_datanode.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/pulsar_clickhouse/group_stream.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/pulsar_clickhouse/group_stream.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/pulsar_clickhouse/group_stream.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/pulsar_clickhouse/group_stream.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/pulsar_clickhouse/sink.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/pulsar_clickhouse/sink.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/pulsar_clickhouse/sink.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/pulsar_clickhouse/sink.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/pulsar_clickhouse/sink_data.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/pulsar_clickhouse/sink_data.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/pulsar_clickhouse/sink_data.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/pulsar_clickhouse/sink_data.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/pulsar_clickhouse/sink_fields.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/pulsar_clickhouse/sink_fields.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/pulsar_clickhouse/sink_fields.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/pulsar_clickhouse/sink_fields.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/pulsar_clickhouse/source.png
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/pulsar_clickhouse/source.png
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/img/pulsar_clickhouse/source.png
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/img/pulsar_clickhouse/source.png
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/mysql_clickhouse_example.md
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/mysql_clickhouse_example.md
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/mysql_clickhouse_example.md
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/mysql_clickhouse_example.md
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/mysql_iceberg_example.md
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/mysql_iceberg_example.md
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/mysql_iceberg_example.md
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/mysql_iceberg_example.md
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/mysql_starrocks_example.md
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/mysql_starrocks_example.md
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/mysql_starrocks_example.md
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/mysql_starrocks_example.md
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/pulsar_clickhouse_example.md
 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/pulsar_clickhouse_example.md
similarity index 100%
rename from 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/data_sync/pulsar_clickhouse_example.md
rename to 
i18n/zh-CN/docusaurus-plugin-content-docs/current/quick_start/realtime_data_sync/pulsar_clickhouse_example.md

Reply via email to