Flink CDC以前旧版本cdc2.2.1默认一个source表下如果不配置线程池,默认是多少个?

Flink CDC以前旧版本 cdc2.2.1 默认一个source表下如果不配置线程池,默认是多少个,现在如果很多source表,每个最低给1个 会不会产生大量的连接呢?

展开
收起
真的很搞笑 2023-12-31 21:16:43 80 分享 版权
阿里云 AI 助理回答

在Flink CDC的旧版本(如cdc 2.2.1)中,如果不显式配置线程池,默认情况下每个MySQL CDC Source表会使用一个独立的Binlog连接。这意味着,如果作业中有多个Source表,并且未开启Source复用功能,每个Source表都会创建一个独立的Binlog连接。

关于连接数的具体说明

  1. 默认连接数

    • 在cdc 2.2.1版本中,如果没有配置server-id或线程池参数,每个Source表会默认分配一个独立的Binlog连接。
    • 如果作业中有多个Source表,且这些表的配置不同(例如不同的数据库或表),则每个表都会创建一个独立的连接。
  2. 多Source表场景下的连接数问题

    • 如果当前作业包含多个MySQL CDC Source表,并且未开启Source复用功能,每个Source表都会创建至少一个Binlog连接。
    • 这种情况下,会产生大量的Binlog连接,尤其是在Source表数量较多时,可能会对上游数据库造成较大的压力。
  3. 如何优化连接数

    • 开启Source复用:从实时计算Flink版的VVR 8.0.7及以上版本开始,支持通过设置table.optimizer.source-merge.enabled参数来开启Source复用功能。开启后,具有相同配置的MySQL CDC Source表会合并复用Binlog连接,从而减少连接数。
      SET 'table.optimizer.source-merge.enabled' = 'true';
      
    • 全量读取阶段:在全量读取阶段,Binlog连接数等于Source并发度。
    • 增量读取阶段:在增量读取阶段,Binlog连接数可以降低到1。
  4. 注意事项

    • 无状态启动:开启Source复用后,建议以无状态方式启动作业,因为Source复用会导致作业拓扑发生变化,可能无法从原有状态恢复。
    • 版本限制:在VVR 8.0.8及8.0.9版本中,开启CDC Source复用时,还需要额外设置以下参数:
      SET 'sql-gateway.exec-plan.enabled' = 'false';
      
    • 避免算子链断开:不建议将pipeline.operator-chaining设为false,因为这会增加序列化和反序列化的开销,尤其是在合并的Source较多时。

总结建议

  • 如果您的作业中包含多个MySQL CDC Source表,建议升级到较新的Flink版本并开启Source复用功能,以减少Binlog连接数。
  • 对于旧版本(如cdc 2.2.1),由于缺乏Source复用功能,确实会产生大量连接。在这种情况下,可以通过手动调整server-id范围或减少Source表的数量来缓解连接压力。

希望以上信息能够帮助您更好地理解和优化Flink CDC的连接管理!

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

还有其他疑问?
咨询AI助理