From d56ea7246418f2ab99d5ceeb8a80d0974bba1356 Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Thu, 20 Mar 2025 11:34:58 +0800 Subject: [PATCH 01/13] Add temp.md --- temp.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 temp.md diff --git a/temp.md b/temp.md new file mode 100644 index 0000000000000..af27ff4986a7b --- /dev/null +++ b/temp.md @@ -0,0 +1 @@ +This is a test file. \ No newline at end of file From fd08ad2e1a46141360528188a5cad248ef7dd270 Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Thu, 20 Mar 2025 11:35:04 +0800 Subject: [PATCH 02/13] Delete temp.md --- temp.md | 1 - 1 file changed, 1 deletion(-) delete mode 100644 temp.md diff --git a/temp.md b/temp.md deleted file mode 100644 index af27ff4986a7b..0000000000000 --- a/temp.md +++ /dev/null @@ -1 +0,0 @@ -This is a test file. \ No newline at end of file From 1942eda58589bedd0a35af89ce3d9e1ea1d95d2c Mon Sep 17 00:00:00 2001 From: qiancai Date: Thu, 20 Mar 2025 17:35:26 +0800 Subject: [PATCH 03/13] add translation --- TOC.md | 1 + media/ticdc/ticdc-new-arch-1.png | Bin 0 -> 68964 bytes media/ticdc/ticdc-new-arch-2.png | Bin 0 -> 44623 bytes ticdc/ticdc-new-arch.md | 160 +++++++++++++++++++++++++++++++ ticdc/ticdc-server-config.md | 6 ++ 5 files changed, 167 insertions(+) create mode 100644 media/ticdc/ticdc-new-arch-1.png create mode 100644 media/ticdc/ticdc-new-arch-2.png create mode 100644 ticdc/ticdc-new-arch.md diff --git a/TOC.md b/TOC.md index 8ab23a5506c4f..e52b8a89beb6f 100644 --- a/TOC.md +++ b/TOC.md @@ -183,6 +183,7 @@ - [Log Filter](/ticdc/ticdc-filter.md) - [DDL Replication](/ticdc/ticdc-ddl.md) - [Bidirectional Replication](/ticdc/ticdc-bidirectional-replication.md) + - [TiCDC New Architecture](/ticdc/ticdc-new-arch.md) - Monitor and Alert - [Monitoring Metrics Summary](/ticdc/ticdc-summary-monitor.md) - [Monitoring Metrics Details](/ticdc/monitor-ticdc.md) diff --git a/media/ticdc/ticdc-new-arch-1.png b/media/ticdc/ticdc-new-arch-1.png new file mode 100644 index 0000000000000000000000000000000000000000..06b55db0c1ebcd28b51d7db9f3106f65fa2eb3ed GIT binary patch literal 68964 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 **Warning:** +> +> The TiCDC new architecture is currently experimental. It is not recommended that you use it in the production environment. This feature might be changed or removed without prior notice. If you find a bug, you can report an [issue](https://github.com/pingcap/tidb/issues) on GitHub. + +## Architectural design + +![TiCDC New Architecture](/media/ticdc/ticdc-new-arch-1.jpg) + +The TiCDC new architecture consists of two core components: Log Service and Downstream Adapter. + +- Log Service: as the core data service layer, Log Service fetches information such as row changes and DDL events from the upstream TiDB cluster, and then temporarily stores the change data on local disk. It also responds to data requests from the Downstream Adapter, periodically merging and sorting DML and DDL data before pushing it to the Downstream Adapter. +- Downstream Adapter: as the downstream data replication adaptation layer, Downstream Adapter handles user-initiated changefeed operations. It schedules and generates related replication tasks, fetches data from the Log Service, and replicates the fetched data to downstream systems. + +By separating the architecture into stateful and stateless components, the TiCDC new architecture significantly improves system scalability, reliability, and flexibility. Log Service, as the stateful component, focuses on data acquisition, sorting, and storage. Decoupling it from changefeed processing logic enables data sharing across multiple changefeeds, effectively improving resource utilization and reducing system overhead. Downstream Adapter, as the stateless component, uses a lightweight scheduling mechanism that allows quick migration of replication tasks between instances. It can dynamically adjust the splitting and merging of replication tasks based on workload changes, ensuring low-latency replication in various scenarios. + +## Comparison between the old and new architectures + +The new architecture is designed to address common issues that users might encounter during continuous system scaling, such as performance bottlenecks, insufficient stability, and limited scalability. Compared with the old architecture, the new architecture achieves significant optimizations in the following key dimensions: + +| Feature | TiCDC old architecture | TiCDC new architecture | +| ------------------------ | ---------------------------------------- | ---------------------------------------- | +| **Processing logic driver** | Timer-driven | Event-driven | +| **Task triggering mechanism** | Timer-triggered main loop that checks tasks every 50 ms, with limited processing performance | Event-driven, triggered by events such as DML changes, DDL changes, and changefeed operations. Events in the queue are processed as quickly as possible without waiting for the fixed 50 ms interval, reducing additional latency | +| **Task scheduling method** | Each changefeed runs a main loop that polls for tasks | Events are queued and processed concurrently by multiple threads | +| **Task processing efficiency** | Each task goes through multiple cycles, creating performance bottlenecks | Events are processed immediately without waiting for fixed intervals, reducing latency | +| **Resource consumption** | Frequent checks on inactive tables waste CPU resources | Consumer threads only queued events, avoiding the consumption of checking inactive tasks | +| **Complexity** | O(n), performance degrades as the number of tables increases | O(1), not affected by the number of tables, improving efficiency | +| **CPU utilization** | Each changefeed can only use one logical CPU | Each changefeed can fully utilize the parallel processing capabilities of multi-core CPUs | +| **Scalability** | Poor scalability (limited by the number of CPUs) | Strong scalability through multi-threaded processing and event queues | +| **Changefeed interference** | The owner node might cause interference between changefeeds | Event-driven mode avoids interference between changefeeds | + +![TiCDC New Architecture](/media/ticdc/ticdc-new-arch-2.jpg) + +## Limitations + +As an experimental feature, the TiCDC new architecture in v9.0.0 does not yet include all the functionalities of the old architecture. The following features will be available when the new architecture becomes generally available (GA) in future versions: + +- [Split Update Events](/ticdc/ticdc-split-update-behavior.md) +- [Eventually Consistent Replication for Disaster Scenarios](/ticdc/ticdc-sink-to-mysql.md#eventually-consistent-replication-in-disaster-scenarios) +- Split large transactions +- [TiCDC Avro Protocol](/ticdc/ticdc-avro-protocol.md) +- [TiCDC CSV Protocol](/ticdc/ticdc-csv.md) +- [TiCDC Debezium Protocol](/ticdc/ticdc-debezium.md) +- [TiCDC Simple Protocol](/ticdc/ticdc-simple-protocol.md) +- [Event Filter](/ticdc/ticdc-filter.md#event-filter-rules) +- [TiCDC Data Integrity Validation for Single-Row Data](/ticdc/ticdc-integrity-check.md) +- [TiCDC Bidirectional Replication](/ticdc/ticdc-bidirectional-replication.md) +- [Replicate Data to Pulsar](/ticdc/ticdc-sink-to-pulsar.md) +- [Replicate Data to Storage Services](/ticdc/ticdc-sink-to-cloud-storage.md) + +## Deployment steps + +The TiCDC new architecture can only be deployed in TiDB clusters of v7.5.0 or later versions. Before deployment, make sure your TiDB cluster meets this version requirement. + +You can use one of the following deployment methods: + +- [Deploy a new TiDB cluster with new architecture TiCDC nodes using TiUP](#deploy-a-new-tidb-cluster-with-new-architecture-ticdc-nodes-using-tiup) +- [Deploy new architecture TiCDC nodes in an existing TiDB cluster using TiUP](#deploy-new-architecture-ticdc-nodes-in-an-existing-tidb-cluster-using-tiup) + +### Deploy a new TiDB cluster with new architecture TiCDC nodes using TiUP + +When deploying a new TiDB cluster of v9.0.0 or later using TiUP, you can also deploy the new architecture TiCDC at the same time. You only need to add the TiCDC related section and enable the new architecture in the configuration file that TiUP uses to start the TiDB cluster. The following is an example: + +```shell +cdc_servers: + - host: 10.0.1.20 + config: + newarch: true + - host: 10.0.1.21 + config: + newarch: true +``` + +> **Note:** +> +> The `newarch` configuration item is used only for the new architecture. If the `newarch` configuration item is not specified, the old architecture is used by default. If you still need to use the old TiCDC architecture, do not add the `newarch` configuration item to the configuration file, as it might cause parsing failures. + +For detailed instructions, see [Deploy a new TiDB cluster that includes TiCDC using TiUP](/ticdc/deploy-ticdc.md#deploy-a-new-tidb-cluster-that-includes-ticdc-using-tiup). + +### Deploy new architecture TiCDC nodes in an existing TiDB cluster using TiUP + +1. If your TiDB cluster does not have TiCDC nodes yet, refer to [Scale out a TiCDC cluster](/scale-tidb-using-tiup.md#scale-out-a-ticdc-cluster) to add new TiCDC nodes in the cluster. Otherwise, skip this step. + +2. If your TiDB cluster version is earlier than v9.0.0, you need to manually download the TiCDC binary package of v9.0.0 or later, and then patch the downloaded file to your TiDB cluster. Otherwise, skip this step. + + > **Note:** + > + > After TiCDC is upgraded to the new architecture, rolling back to the old architecture is not supported. + + 1. Download the TiCDC binary file of v9.0.0 or later. + + The download link follows this format: `https://tiup-mirrors.pingcap.com/cdc-${version}-${os}-${arch}.tar.gz`, where `{version}` is the TiCDC version, `${os}` is your operating system, and `{arch}` is the platform the component runs on (`amd64` or `arm64`). + + For example, to download the binary file of TiCDC v9.0.0 for Linux (x86-64), run the following command: + + ```shell + wget https://tiup-mirrors.pingcap.com/cdc-v9.0.0-linux-amd64.tar.gz + ``` + + 2. Patch the downloaded TiCDC binary file to your TiDB cluster: + + ```shell + tiup cluster patch ./cdc-v9.0.0-linux-amd64.tar.gz -R cdc + ``` + +3. If your TiDB cluster has running changefeeds, refer to [Pause a replication task](/ticdc/ticdc-manage-changefeed.md#pause-a-replication-task) to pause all replication tasks of the changefeeds. + +4. Update the TiCDC configuration using TiUP: + + ```shell + tiup cluster edit-config + ``` + + ```shell + server_configs: + cdc: + newarch: true + ``` + +5. Refer to [Resume replication Task](/ticdc/ticdc-manage-changefeed.md#resume-a-replication-task) to resume the replication tasks of all changefeeds. + +## Use the new architecture + +After deploying the TiCDC nodes with the new architecture, you can continue using the same commands as in the old architecture. There is no need to learn new commands or modify the commands used in the old architecture. + +For example, to create a replication task in a new architecture TiCDC node, run the following command: + +```shell +cdc cli changefeed create --server=http://127.0.0.1:8300 --sink-uri="mysql://root:123456@127.0.0.1:3306/" --changefeed-id="simple-replication-task" +``` + +To query details about a specific replication task, run the following command: + +```shell +cdc cli changefeed query -s --server=http://127.0.0.1:8300 --changefeed-id=simple-replication-task +``` + +For more command usage methods and details, see [Manage Changefeeds](/ticdc/ticdc-manage-changefeed.md). + +## Monitoring + +The monitoring dashboard for the TiCDC new architecture is integrated into the Grafana dashboard, with the name TiCDC-New-Arch. You can view monitoring metrics related to the new architecture on this dashboard. + +## Notes + +- In the TiCDC old architecture, DDL replication operations are strictly serial, thus the replication progress can be tracked only using the changefeed's `CheckpointTs`. In the new architecture, however, TiCDC replicates DDL changes for different tables in parallel whenever possible to improve DDL replication efficiency. To accurately record the DDL replication progress of each table in a downstream MySQL-compatible database, the TiCDC new architecture creates a table named `tidb_cdc.ddl_ts_v1` in the downstream database, specifically storing the DDL replication progress information of the changefeed. \ No newline at end of file diff --git a/ticdc/ticdc-server-config.md b/ticdc/ticdc-server-config.md index b21dc707eef8b..bf069c681ce51 100644 --- a/ticdc/ticdc-server-config.md +++ b/ticdc/ticdc-server-config.md @@ -30,6 +30,12 @@ The following are descriptions of options available in a `cdc server` command: The following describes the configuration file specified by the `config` option in the `cdc server` command. You can find the default configuration file in [`pkg/cmd/util/ticdc.toml`](https://github.com/pingcap/tiflow/blob/master/pkg/cmd/util/ticdc.toml). +### `newarch` New in v9.0.0 + +- Controls whether to enable the [TiCDC new architecture](/ticdc/ticdc-new-arch.md). +- When it is set to `true`, the TiCDC new architecture is enabled. +- By default, `newarch` is not specified, indicating that the old architecture is used. `newarch` applies only to the new architecture. If `newarch` is added to the configuration file of the TiCDC old architecture, it might cause parsing failures. + ### `addr` From b2d4f7892ff4d652b01d666d075b1f47f1429248 Mon Sep 17 00:00:00 2001 From: qiancai Date: Thu, 20 Mar 2025 17:36:48 +0800 Subject: [PATCH 04/13] Update ticdc-new-arch.md --- ticdc/ticdc-new-arch.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ticdc/ticdc-new-arch.md b/ticdc/ticdc-new-arch.md index f8323154f18ee..e41ea9c7c4a6a 100644 --- a/ticdc/ticdc-new-arch.md +++ b/ticdc/ticdc-new-arch.md @@ -18,7 +18,7 @@ Starting from v9.0.0, TiCDC introduces a new architecture that improves real-tim ## Architectural design -![TiCDC New Architecture](/media/ticdc/ticdc-new-arch-1.jpg) +![TiCDC New Architecture](/media/ticdc/ticdc-new-arch-1.png) The TiCDC new architecture consists of two core components: Log Service and Downstream Adapter. @@ -43,7 +43,7 @@ The new architecture is designed to address common issues that users might encou | **Scalability** | Poor scalability (limited by the number of CPUs) | Strong scalability through multi-threaded processing and event queues | | **Changefeed interference** | The owner node might cause interference between changefeeds | Event-driven mode avoids interference between changefeeds | -![TiCDC New Architecture](/media/ticdc/ticdc-new-arch-2.jpg) +![TiCDC New Architecture](/media/ticdc/ticdc-new-arch-2.png) ## Limitations From ad09682ad8172d1545018573d500ef0b5e38fc7a Mon Sep 17 00:00:00 2001 From: lidezhu <47731263+lidezhu@users.noreply.github.com> Date: Fri, 21 Mar 2025 18:40:07 +0800 Subject: [PATCH 05/13] Update ticdc/ticdc-new-arch.md --- ticdc/ticdc-new-arch.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ticdc/ticdc-new-arch.md b/ticdc/ticdc-new-arch.md index e41ea9c7c4a6a..d60528c163666 100644 --- a/ticdc/ticdc-new-arch.md +++ b/ticdc/ticdc-new-arch.md @@ -14,7 +14,7 @@ Starting from v9.0.0, TiCDC introduces a new architecture that improves real-tim > **Warning:** > -> The TiCDC new architecture is currently experimental. It is not recommended that you use it in the production environment. This feature might be changed or removed without prior notice. If you find a bug, you can report an [issue](https://github.com/pingcap/tidb/issues) on GitHub. +> The TiCDC new architecture is currently experimental. It is not recommended that you use it in the production environment. This feature might be changed without prior notice. If you find a bug, you can report an [issue](https://github.com/pingcap/tidb/issues) on GitHub. ## Architectural design From 20d8dd0ace334ef5038ad0fba3c5aed5de3dd422 Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Fri, 21 Mar 2025 20:16:40 +0800 Subject: [PATCH 06/13] Apply suggestions from code review Co-authored-by: lidezhu <47731263+lidezhu@users.noreply.github.com> --- ticdc/ticdc-new-arch.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ticdc/ticdc-new-arch.md b/ticdc/ticdc-new-arch.md index d60528c163666..abbadd902fb2a 100644 --- a/ticdc/ticdc-new-arch.md +++ b/ticdc/ticdc-new-arch.md @@ -37,7 +37,7 @@ The new architecture is designed to address common issues that users might encou | **Task triggering mechanism** | Timer-triggered main loop that checks tasks every 50 ms, with limited processing performance | Event-driven, triggered by events such as DML changes, DDL changes, and changefeed operations. Events in the queue are processed as quickly as possible without waiting for the fixed 50 ms interval, reducing additional latency | | **Task scheduling method** | Each changefeed runs a main loop that polls for tasks | Events are queued and processed concurrently by multiple threads | | **Task processing efficiency** | Each task goes through multiple cycles, creating performance bottlenecks | Events are processed immediately without waiting for fixed intervals, reducing latency | -| **Resource consumption** | Frequent checks on inactive tables waste CPU resources | Consumer threads only queued events, avoiding the consumption of checking inactive tasks | +| **Resource consumption** | Frequent checks on inactive tables waste CPU resources | Consumer threads only process queued events, avoiding the consumption of checking inactive tasks | | **Complexity** | O(n), performance degrades as the number of tables increases | O(1), not affected by the number of tables, improving efficiency | | **CPU utilization** | Each changefeed can only use one logical CPU | Each changefeed can fully utilize the parallel processing capabilities of multi-core CPUs | | **Scalability** | Poor scalability (limited by the number of CPUs) | Strong scalability through multi-threaded processing and event queues | From f7406b1842687abc916fa66f26e6588d57b84ce6 Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Tue, 25 Mar 2025 11:36:36 +0800 Subject: [PATCH 07/13] Update ticdc/ticdc-new-arch.md --- ticdc/ticdc-new-arch.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ticdc/ticdc-new-arch.md b/ticdc/ticdc-new-arch.md index abbadd902fb2a..8ccf08100a4ac 100644 --- a/ticdc/ticdc-new-arch.md +++ b/ticdc/ticdc-new-arch.md @@ -47,7 +47,7 @@ The new architecture is designed to address common issues that users might encou ## Limitations -As an experimental feature, the TiCDC new architecture in v9.0.0 does not yet include all the functionalities of the old architecture. The following features will be available when the new architecture becomes generally available (GA) in future versions: +As an experimental feature, the TiCDC new architecture does not yet include all the functionalities of the old architecture. The following features will be available when the new architecture becomes generally available (GA) in future versions: - [Split Update Events](/ticdc/ticdc-split-update-behavior.md) - [Eventually Consistent Replication for Disaster Scenarios](/ticdc/ticdc-sink-to-mysql.md#eventually-consistent-replication-in-disaster-scenarios) From f4f0c1f85b92254d55e8c04f80a674aaed12d8c1 Mon Sep 17 00:00:00 2001 From: qiancai Date: Wed, 26 Mar 2025 10:52:40 +0800 Subject: [PATCH 08/13] implement comments from https://github.com/pingcap/docs-cn/pull/19765/files --- ticdc/ticdc-new-arch.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/ticdc/ticdc-new-arch.md b/ticdc/ticdc-new-arch.md index 8ccf08100a4ac..71b629bb2ecae 100644 --- a/ticdc/ticdc-new-arch.md +++ b/ticdc/ticdc-new-arch.md @@ -29,7 +29,7 @@ By separating the architecture into stateful and stateless components, the TiCDC ## Comparison between the old and new architectures -The new architecture is designed to address common issues that users might encounter during continuous system scaling, such as performance bottlenecks, insufficient stability, and limited scalability. Compared with the old architecture, the new architecture achieves significant optimizations in the following key dimensions: +The new architecture is designed to address common issues during continuous system scaling, such as performance bottlenecks, insufficient stability, and limited scalability. Compared with the old architecture, the new architecture achieves significant optimizations in the following key dimensions: | Feature | TiCDC old architecture | TiCDC new architecture | | ------------------------ | ---------------------------------------- | ---------------------------------------- | @@ -43,7 +43,7 @@ The new architecture is designed to address common issues that users might encou | **Scalability** | Poor scalability (limited by the number of CPUs) | Strong scalability through multi-threaded processing and event queues | | **Changefeed interference** | The owner node might cause interference between changefeeds | Event-driven mode avoids interference between changefeeds | -![TiCDC New Architecture](/media/ticdc/ticdc-new-arch-2.png) +![Comparison between the TiCDC old and new architectures](/media/ticdc/ticdc-new-arch-2.png) ## Limitations @@ -75,7 +75,7 @@ You can use one of the following deployment methods: When deploying a new TiDB cluster of v9.0.0 or later using TiUP, you can also deploy the new architecture TiCDC at the same time. You only need to add the TiCDC related section and enable the new architecture in the configuration file that TiUP uses to start the TiDB cluster. The following is an example: -```shell +```yaml cdc_servers: - host: 10.0.1.20 config: @@ -87,7 +87,7 @@ cdc_servers: > **Note:** > -> The `newarch` configuration item is used only for the new architecture. If the `newarch` configuration item is not specified, the old architecture is used by default. If you still need to use the old TiCDC architecture, do not add the `newarch` configuration item to the configuration file, as it might cause parsing failures. +> The `newarch` configuration item is used only for the TiCDC new architecture. If the `newarch` configuration item is not specified, the old architecture is used by default. If you still need to use the old TiCDC architecture, do not add the `newarch` configuration item to the configuration file, as it might cause parsing failures. For detailed instructions, see [Deploy a new TiDB cluster that includes TiCDC using TiUP](/ticdc/deploy-ticdc.md#deploy-a-new-tidb-cluster-that-includes-ticdc-using-tiup). @@ -97,7 +97,7 @@ For detailed instructions, see [Deploy a new TiDB cluster that includes TiCDC us 2. If your TiDB cluster version is earlier than v9.0.0, you need to manually download the TiCDC binary package of v9.0.0 or later, and then patch the downloaded file to your TiDB cluster. Otherwise, skip this step. - > **Note:** + > **Warning:** > > After TiCDC is upgraded to the new architecture, rolling back to the old architecture is not supported. @@ -119,13 +119,13 @@ For detailed instructions, see [Deploy a new TiDB cluster that includes TiCDC us 3. If your TiDB cluster has running changefeeds, refer to [Pause a replication task](/ticdc/ticdc-manage-changefeed.md#pause-a-replication-task) to pause all replication tasks of the changefeeds. -4. Update the TiCDC configuration using TiUP: +4. Update the TiCDC configuration using the [`tiup cluster edit-config`](/tiup/tiup-component-cluster-edit-config.md) command: ```shell tiup cluster edit-config ``` - ```shell + ```yaml server_configs: cdc: newarch: true @@ -153,7 +153,7 @@ For more command usage methods and details, see [Manage Changefeeds](/ticdc/ticd ## Monitoring -The monitoring dashboard for the TiCDC new architecture is integrated into the Grafana dashboard, with the name TiCDC-New-Arch. You can view monitoring metrics related to the new architecture on this dashboard. +The monitoring dashboard for the TiCDC new architecture is integrated into the Grafana dashboard, with the name **TiCDC-New-Arch**. You can view monitoring metrics related to the new architecture on this dashboard. ## Notes From 1c26282112bfa5c4450fca3bcfe890479f1beaad Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Wed, 26 Mar 2025 10:54:52 +0800 Subject: [PATCH 09/13] Update ticdc/ticdc-new-arch.md Co-authored-by: lidezhu <47731263+lidezhu@users.noreply.github.com> --- ticdc/ticdc-new-arch.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ticdc/ticdc-new-arch.md b/ticdc/ticdc-new-arch.md index 71b629bb2ecae..719a5e586402a 100644 --- a/ticdc/ticdc-new-arch.md +++ b/ticdc/ticdc-new-arch.md @@ -22,7 +22,7 @@ Starting from v9.0.0, TiCDC introduces a new architecture that improves real-tim The TiCDC new architecture consists of two core components: Log Service and Downstream Adapter. -- Log Service: as the core data service layer, Log Service fetches information such as row changes and DDL events from the upstream TiDB cluster, and then temporarily stores the change data on local disk. It also responds to data requests from the Downstream Adapter, periodically merging and sorting DML and DDL data before pushing it to the Downstream Adapter. +- Log Service: as the core data service layer, Log Service fetches information such as row changes and DDL events from the upstream TiDB cluster, and then temporarily stores the change data on local disk. It also responds to data requests from the Downstream Adapter, periodically merging and sorting DML and DDL data and pushing the sorted data to the Downstream Adapter. - Downstream Adapter: as the downstream data replication adaptation layer, Downstream Adapter handles user-initiated changefeed operations. It schedules and generates related replication tasks, fetches data from the Log Service, and replicates the fetched data to downstream systems. By separating the architecture into stateful and stateless components, the TiCDC new architecture significantly improves system scalability, reliability, and flexibility. Log Service, as the stateful component, focuses on data acquisition, sorting, and storage. Decoupling it from changefeed processing logic enables data sharing across multiple changefeeds, effectively improving resource utilization and reducing system overhead. Downstream Adapter, as the stateless component, uses a lightweight scheduling mechanism that allows quick migration of replication tasks between instances. It can dynamically adjust the splitting and merging of replication tasks based on workload changes, ensuring low-latency replication in various scenarios. From 986b84c70f54a1b40b1436e84edeecd9c212f4c2 Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Thu, 17 Apr 2025 12:02:52 +0800 Subject: [PATCH 10/13] minor wording updates --- ticdc/ticdc-new-arch.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ticdc/ticdc-new-arch.md b/ticdc/ticdc-new-arch.md index 719a5e586402a..9a9e2c893f3b5 100644 --- a/ticdc/ticdc-new-arch.md +++ b/ticdc/ticdc-new-arch.md @@ -10,7 +10,7 @@ Starting from v9.0.0, TiCDC introduces a new architecture that improves real-tim - **Higher single-node performance**: a single node can replicate up to 500,000 tables, achieving replication throughput of up to 200 MiB/s in wide table scenarios. - **Enhanced scalability**: cluster replication capability scales almost linearly. A single cluster can expand to over 100 nodes, support more than 10,000 changefeeds, and replicate millions of tables within a single changefeed. - **Improved stability**: changefeed latency is reduced and performance is more stable in scenarios with high traffic, frequent DDL operations, and cluster scaling events. Resource isolation and priority scheduling reduce interference between multiple changefeed tasks. -- **Lower resource costs**: with improved resource utilization and reduced redundancy, CPU and memory resource usage efficiency improves by up to an order of magnitude in typical scenarios. +- **Lower resource costs**: with improved resource utilization and reduced redundancy, CPU and memory resource usage efficiency improves by up to ten times in typical scenarios. > **Warning:** > From 1573114474a753121cbd3e8bfcee006f9662f0bf Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Thu, 17 Apr 2025 13:41:19 +0800 Subject: [PATCH 11/13] sync from zh changes --- ticdc/ticdc-new-arch.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ticdc/ticdc-new-arch.md b/ticdc/ticdc-new-arch.md index 9a9e2c893f3b5..85a85fee12f72 100644 --- a/ticdc/ticdc-new-arch.md +++ b/ticdc/ticdc-new-arch.md @@ -105,16 +105,16 @@ For detailed instructions, see [Deploy a new TiDB cluster that includes TiCDC us The download link follows this format: `https://tiup-mirrors.pingcap.com/cdc-${version}-${os}-${arch}.tar.gz`, where `{version}` is the TiCDC version, `${os}` is your operating system, and `{arch}` is the platform the component runs on (`amd64` or `arm64`). - For example, to download the binary file of TiCDC v9.0.0 for Linux (x86-64), run the following command: + For example, to download the binary file of TiCDC v9.0.0-beta.1 for Linux (x86-64), run the following command: ```shell - wget https://tiup-mirrors.pingcap.com/cdc-v9.0.0-linux-amd64.tar.gz + wget https://tiup-mirrors.pingcap.com/cdc-v9.0.0-beta.1-linux-amd64.tar.gz ``` 2. Patch the downloaded TiCDC binary file to your TiDB cluster: ```shell - tiup cluster patch ./cdc-v9.0.0-linux-amd64.tar.gz -R cdc + tiup cluster patch ./cdc-v9.0.0-beta.1-linux-amd64.tar.gz -R cdc ``` 3. If your TiDB cluster has running changefeeds, refer to [Pause a replication task](/ticdc/ticdc-manage-changefeed.md#pause-a-replication-task) to pause all replication tasks of the changefeeds. From d68ba4cd846a563465aea7959a213ca3de8dcc30 Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Wed, 23 Apr 2025 13:59:22 +0800 Subject: [PATCH 12/13] Apply suggestions from code review Co-authored-by: Aolin --- ticdc/ticdc-new-arch.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ticdc/ticdc-new-arch.md b/ticdc/ticdc-new-arch.md index 85a85fee12f72..78b5e64be71bb 100644 --- a/ticdc/ticdc-new-arch.md +++ b/ticdc/ticdc-new-arch.md @@ -1,6 +1,6 @@ --- title: TiCDC New Architecture Introduction -summary: Introduces the features, architectural characteristics, deployment guide, and notes of the TiCDC new architecture. +summary: Introduces the features, architectural design, deployment guide, and notes of the TiCDC new architecture. --- # TiCDC New Architecture Introduction @@ -47,7 +47,7 @@ The new architecture is designed to address common issues during continuous syst ## Limitations -As an experimental feature, the TiCDC new architecture does not yet include all the functionalities of the old architecture. The following features will be available when the new architecture becomes generally available (GA) in future versions: +As an experimental feature, the TiCDC new architecture does not yet support all the functionalities available in the old architecture. The following features will be available when the new architecture becomes generally available (GA) in future versions: - [Split Update Events](/ticdc/ticdc-split-update-behavior.md) - [Eventually Consistent Replication for Disaster Scenarios](/ticdc/ticdc-sink-to-mysql.md#eventually-consistent-replication-in-disaster-scenarios) @@ -103,13 +103,13 @@ For detailed instructions, see [Deploy a new TiDB cluster that includes TiCDC us 1. Download the TiCDC binary file of v9.0.0 or later. - The download link follows this format: `https://tiup-mirrors.pingcap.com/cdc-${version}-${os}-${arch}.tar.gz`, where `{version}` is the TiCDC version, `${os}` is your operating system, and `{arch}` is the platform the component runs on (`amd64` or `arm64`). + The download link follows this format: `https://tiup-mirrors.pingcap.com/cdc-${version}-${os}-${arch}.tar.gz`, where `${version}` is the TiCDC version, `${os}` is your operating system, and `${arch}` is the platform the component runs on (`amd64` or `arm64`). For example, to download the binary file of TiCDC v9.0.0-beta.1 for Linux (x86-64), run the following command: - ```shell - wget https://tiup-mirrors.pingcap.com/cdc-v9.0.0-beta.1-linux-amd64.tar.gz - ``` + ```shell + wget https://tiup-mirrors.pingcap.com/cdc-v9.0.0-beta.1-linux-amd64.tar.gz + ``` 2. Patch the downloaded TiCDC binary file to your TiDB cluster: From 368ce0141759e7c28a6a78b98d674508b0a67040 Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Wed, 23 Apr 2025 14:12:45 +0800 Subject: [PATCH 13/13] sync from zh changes --- ticdc/ticdc-new-arch.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ticdc/ticdc-new-arch.md b/ticdc/ticdc-new-arch.md index 78b5e64be71bb..4b27cc6009e1b 100644 --- a/ticdc/ticdc-new-arch.md +++ b/ticdc/ticdc-new-arch.md @@ -111,7 +111,7 @@ For detailed instructions, see [Deploy a new TiDB cluster that includes TiCDC us wget https://tiup-mirrors.pingcap.com/cdc-v9.0.0-beta.1-linux-amd64.tar.gz ``` - 2. Patch the downloaded TiCDC binary file to your TiDB cluster: + 2. Patch the downloaded TiCDC binary file to your TiDB cluster using the [`tiup cluster patch`](/tiup/tiup-component-cluster-patch.md) command: ```shell tiup cluster patch ./cdc-v9.0.0-beta.1-linux-amd64.tar.gz -R cdc