开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

Flink CDC 知道这个是什么原因导致的吗?

Flink CDC这边使用flink-sql-connector-mysql-cdc 2.4.0.jar 和 flink-sql-connector-mongodb-1.0-1.16.jar,来完成mysql2mongodb的数据同步,flink job的cp时间间隔为10s?在任务同步的過程中,当mysql中 update了一条数据,mongo中立刻去查,会查不到(update之前可以查到),大约等了10s以后mongo就可以查到了,刚好是cp的时间,我这边flinksql中source和sink都按照文档说明,指定了主键。但是在mongo中有这么10s查不到数据,业务上是不可接受的。 有大佬知道这个是什么原因导致的吗?文档中说是是upsert 写mongo,按理说不会出现会查不到的情况image.png

展开
收起
真的很搞笑 2024-03-05 23:42:05 29 0
2 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在您描述的情况中,MySQL中更新了一条数据后,MongoDB中大约10秒后才能看到更新,这很可能是由于Flink CDC的捕获和处理流程导致的。具体来说,可能涉及到以下几个因素:

    1. 捕获延迟:Flink CDC捕获MySQL中的数据变更可能存在一些固有的延迟。这个延迟是由于Flink CDC工作机制决定的,它需要等待事务提交后才能捕获到数据变更。
    2. 处理时间:数据从MySQL被捕获后,还需要经过Flink的处理流程,包括转换、过滤等操作,然后才能写入MongoDB。这个处理过程也会消耗一定的时间。
    3. 写入延迟:Flink CDC将数据写入MongoDB时,也可能会有短暂的延迟。特别是如果MongoDB集群配置了写确认机制,如副本集确认,这可能会增加写入的延迟时间。
    4. Flink任务并行度:Flink任务的并行度设置也会影响数据处理的速度。如果并行度设置得过低,可能会导致处理速度不够快,从而增加延迟。
    5. 网络延迟:不要忽视网络传输时间,特别是在分布式系统中,数据在不同节点间的传输也可能成为延迟的一个因素。
    6. MongoDB Change Streams:Flink MongoDB CDC Connector是基于MongoDB Change Streams实现的,如果您使用的是单机版的MongoDB,可能不支持Change Streams,这也可能导致同步延迟。

    为了解决这个问题,您可以尝试以下几种方法:

    1. 优化Flink作业的配置:调整Flink作业的并行度,增加任务管理器的数量,以提高数据处理的并发能力。
    2. 检查网络状况:确保网络连接稳定且带宽足够,以减少数据传输的延迟。
    3. 调整Flink CDC的配置:查看是否有相关的配置可以调整以减少捕获和处理的延迟。
    4. 使用最新版本的Flink CDC:确保您使用的Flink CDC版本是最新的,以便获得最佳的性能和稳定性。
    5. 监控Flink作业的运行状态:通过Flink的监控工具来观察作业的运行状态,检查是否有性能瓶颈或者异常情况。

    综上所述,导致数据同步延迟的原因可能是多方面的,需要综合考虑Flink CDC的工作流程、系统配置以及网络环境等因素。通过优化配置和调整策略,应该能够在一定程度上减少同步的延迟时间。如果问题依然存在,建议查阅Flink CDC的官方文档或寻求社区支持,以获取更专业的帮助。

    2024-03-08 23:09:55
    赞同 展开评论 打赏
  • 延时等于cp是正常的,他同步需要时间,如果你想要快一点, 就把checpoint调小单线程执行的, 在mysql的binlog会有offset记录, 你不用担心顺序问题 ,此回答整理自钉群“Flink CDC 社区”

    2024-03-06 10:56:51
    赞同 展开评论 打赏

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

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载