Flink CDC去读取binlog的数据到应用程序的时候,如果我的服务是部署多个实例的话怎么能保证多个实例不会重复读书数据同一份binlog呢?
在Flink CDC中,可以通过使用Binlog的GTID(全局事务标识符)来确保多个实例不会读取同一份binlog。
具体来说,每个实例在开始读取binlog时,都会获取当前已经提交的GTID。然后,在读取binlog时,会检查该binlog是否已经被处理过,即检查其GTID是否小于或等于已经提交的GTID。如果该binlog已经被处理过,则跳过该binlog;否则,将其处理并更新已提交的GTID。
通过这种方式,可以确保每个实例只读取未被处理过的binlog,从而避免重复读取同一份binlog。同时,由于每个实例都有自己的已提交GTID,因此它们之间也不会互相影响。
server-id 需要配置的 flink这块默认的是一个范围内随机给你取值的 ,flink-cdc 里面配置的server-id参数 每个实例都会伪装成 mysql的从节点读取binlog日志信息
,此回答整理自钉群“Flink CDC 社区”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。