Flink CDC中我通过更改源码那个连接池默认设置,改成200,现在不报这个错了,但是共用连接池是不是会导致不同任务中同一张表的cdc会有冲突?比如任务1有表a,任务2也有有表a,是由于共享连接池导致的吗?
我把之前的任务都关掉重启,现在可以了,多任务启动没有问题了,难道只能通过源码更改那个连接池默认设置吗?或者我要在第一次创建表ddl的时候设置:connection.pool.size
我改的是这里这个值。
共用连接池可能导致不同任务中的同一张表的 CDC 产生冲突的情况。当多个任务共享连接池时,它们会共享同一个数据库连接,这可能会导致并发读取和写入操作的冲突。
为了避免这种冲突,你可以考虑以下解决方案:
使用独立的连接池:为每个任务创建独立的连接池,确保每个任务都有自己的数据库连接。这样可以避免不同任务之间的冲突。
使用事务隔离级别:在连接池配置中设置适当的事务隔离级别,以确保并发读写操作的正确性。根据你的需求,可以选择合适的事务隔离级别,如读已提交(Read Committed)或可重复读(Repeatable Read)。
分离表的 CDC:如果可能,将不同任务中的同一张表的 CDC 分离开来,使每个任务都有自己的表。这样可以避免不同任务之间的冲突,并更好地管理数据的读写操作。
关于你提到的在第一次创建表 DDL 时设置连接池大小,这是一个可行的方法。你可以在创建表的 DDL 语句中设置连接池大小,确保每个任务都有适当的连接池大小。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。