cdc 发送到Kafka 的消息协议

请问一下,各位老师,
cdc 发送到Kafka 的消息协议 ,可选值有 defaultcanalavromaxwell (默认值为 default 这些消息协议代表什么意思,与之类似的,能够读取mysql binlog的有2个工具canal,
maxwell,不知道这两者有没有什么关联?
另外default 格式的消息协议具体代表什么意思?

default 的格式是指的 protobuf ,
如果你用的是 canal, 可以选择 canal 和 canal-json 两种格式解析和接收
如果是用的 maxwell, 则只能选择 maxwell 了
以上的协议和格式,各不相同,不能混用

就是说,如果cdc把数据先给到kafka,然后canal 或者maxwell 又从Kafka 里面拿数据,那么格式就要选择canal或者maxwell?
protobuf 这种格式主要是给什么组件使用的?

对,通过CDC 配置好协议后,就会按照给定的格式传递数据给kafka,从kafka 接收数据的时候,就肯定要用一样的格式了,不然咋解析?

protobuf 是 跟语言无关的一种实现,gRPC 的核心定义,google 发明的

那请问老师一下,cdc把数据推送到kafka 后,然后flink 又从kafka里面消费数据,这个时候为啥可以把格式设置为canal-json呢?
flink 除了支持canal-json 以外,maxwell也支持吗?

学习了学习了

已经回答了… 请自行消化~

另外多参考下官方的文档

消息格式理论上只是一个数据的格式,比如可以是json、可以是xml,只要数据接收方知道如何解析,就可以使用。
至于TiCDC 的消息格式里由canal和maxwell,是这两个也是常见的CDC的消息格式,做了支持,这样如果有使用过这两种常见的业务可以直接使用,无需再多了解一种协议格式。
具体消息格式参考:https://docs.pingcap.com/zh/tidb/stable/ticdc-avro-protocol
图片

你是不是说反了? canal 作为 MySQL binlog 增量获取和解析工具,可将变更记录投递到 MQ 系统中,比如 Kafka/RocketMQ,它的上游应该是mysql,做binlog解析的工具。

所谓的canal-json 的协议,只是cdc应用了canal 的解析协议而已,相当于 cdc 解析了tidb 的操作日志,然后以该协议的格式,把内容以json 的格式 传入kafka。

至于你怎么从kafka消费,就取决于你自己了。

谢谢老师的指点

第一次被人称老师,我也是tidb 新手,一起学习~ :rofl: