ticdc to kafka, ddl 消息重复

【TiDB 使用环境】生产环境 /测试/ Poc
【TiDB 版本】所有版本
【问题复现路径】ticdc to kafka

【遇到的问题:问题现象及影响】
假设目标topic有10个分区,在某张表发生ddl操作的时候,所有10个分区都会收到ddl变更消息, 但是dml就只会发送到其中一个分区

请问这个是bug, 还是因为有什么原因特殊这样处理?

1 个赞

TiCDC 对 DDL 消息采用广播(Broadcast) 方式发送到 Kafka 的所有分区,而 DML 消息采用哈希分区(Hash Partition) 方式发送到单个分区,核心是为了兼顾数据一致性 和处理性能

1 个赞

这不是 bug,是 TiCDC 的设计逻辑:DDL 是全局变更,需全分区下发保证消费端都能感知;DML 按表数据哈希路由到单个分区,避免重复消费,也能提升处理效率。

1 个赞

DDL 是全局变更,需全分区下发保证消费端都能感知;DML 按表数据哈希路由到单个分区,避免重复消费,也能提升处理效率

又get一个知识点

mark下

ticdc的原理吧