有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

操作场景

当用户选择 Kafka 多分区时,可以通过设置分区策略,将业务相互关联的数据路由到同一个分区中,这样方便用户处理消费数据。DTS 支持按表名、按表名+主键、按列名进行分区,将订阅数据经过哈希规则路由到 Kafka 各分区。
Kafka 分区策略 - 按表名分区:将源库的订阅数据按照表名进行分区,设置后相同表名的数据会写入同一个 Kafka 分区中。在数据消费时,同一个表内的数据变更总是顺序获得。
Kafka 分区策略 - 按表名+主键分区:将源库的订阅数据按照表名+主键进行分区,适用于热点数据,设置后热点数据的表,通过表名+主键的方式将数据分散到不同分区中,提升并发消费效率。
自定义分区策略:先通过正则表达式对订阅数据中的库名和表名进行匹配,匹配后的数据再按照表名、表名+主键、列进行分区。




Kafka 分区策略

按表名分区

当源数据库变更时,将变更的数据写入订阅 Topic 中,选择按表名分区后,相同表名的订阅数据会写入同一个 Kafka 分区中。在消费数据时,可以保证同一个表内的数据变更总是顺序获得。




按表名+主键分区

当仅指定按照表名分区时,如果一张表为热点数据,则按照表名分区,该 Kafka 分区的压力会非常大。通过表名+主键分区将数据散列到不同分区中,提升并发消费效率。




自定义分区策略

自定义分区策略,是通过正则表达式对库名和表名进行匹配,匹配后的数据再按照表名、表名+主键、列进行分区。

匹配规则

库表、表名的匹配规则支持 RE2 正则表达式,具体语法请参考 语法说明
库名的匹配规则,按照正则表达式来匹配库名。表名的匹配规则,按照正则表达式来匹配表名的数据。如果库名和表名需要精确匹配,需要加开始和结束符,如 test 表应该为 ^test$
列名的匹配规则,按照等值 == 来匹配,大小写不敏感。
优先匹配自定义分区策略,当自定义分区策略未匹配到时,则应用 Kafka 分区策略的设置进行匹配。当自定义分区策略有多条时,自上向下逐条匹配。

按表名分区

库名匹配模式填入 ^A$,表名匹配模式填入 ^test$,选择按表名分区后,A 库中 test 的订阅数据会写入到同一个分区中,test 除外其他未匹配到的库表数据会根据 Kafka 分区策略中设置的策略进行写入。




按表名+主键分区

库名匹配模式填入 ^A$,表名匹配模式填入 ^test$,选择按表名+主键分区后,A 库中 test 的订阅数据会根据主键数据的不同,散列写入到不同的分区中,最终主键数据相同的数据都写入了同一个分区。test 除外其他未匹配到的库表数据会根据 Kafka 分区策略中设置的策略进行写入。




按列分区

库名匹配模式填入 ^A$,表名匹配模式填入 ^test$,自定义分区列填入class,选择按列名分区后,A 库中表 test 列名为 class 的订阅数据将被散列写入到不同分区中,最终同一列的数据更新都写入到了一个分区中。test 除外其他未匹配到的库表数据会根据 Kafka 分区策略中设置的策略进行写入。