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

Flink CDC中增量监听binlog日志同步的时候也会把全部数据都加载到内存吗?

Flink CDC中增量监听binlog日志同步的时候也会把全部数据都加载到内存吗?有没有试过?我现在还在全量同步阶段,如果单独的增量同步不存在全部加载到内存的问题的话,可不可以先用维表的方式做完全量同步。然后再全部流表,但是启动时跳过快照阶段,直接指定位点启动一个新的任务做后续更新同步。

展开
收起
小易01 2023-07-26 08:19:00 173 0
3 条回答
写回答
取消 提交回答
  • 在 Flink CDC 中,增量监听 binlog 日志同步的过程中,并不会将全部数据都加载到内存中。CDC 连接器会根据变更事件来更新流表的数据,而不是全量加载。

    对于维表(Lookup Table),通常可以使用全量同步的方式将数据加载到 Flink 任务的状态中进行缓存。之后,在增量同步阶段,Flink CDC 连接器会捕获变更事件并相应地更新维表数据,从而保持与源表的一致性。

    你提到的做法是可行的:先使用维表的方式进行全量同步,然后在启动一个新的任务时跳过快照阶段,直接指定位点(binlog offset)启动增量同步。这样可以避免重复的全量同步操作,并从指定的位点开始进行后续的增量更新同步。

    需要确保新的任务与之前的任务具有相同的维表配置和版本,以确保维表数据一致性。另外,在新任务启动后,还需要注意处理可能发生的增量数据重放、位点管理等问题。

    总结起来,Flink CDC 可以支持先进行全量同步再进行增量同步的工作流程。这种方式可以减少全量同步的开销,并保证数据的实时性和一致性。

    2023-07-31 22:49:05
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    在Flink CDC中,增量监听binlog日志同步时,不会将全部数据加载到内存中。相反,它会使用类似于流式处理的方式,将变更数据以事件流的形式逐条发送到下游的处理节点。
    Flink CDC使用了Debezium库来实现增量监听binlog日志。具体来说,Debezium会将MySQL数据库中的变更数据通过binlog日志抽取出来,并将其转换为事件流的形式。Flink CDC通过连接到Debezium提供的Kafka或Kinesis等消息队列,将事件流发送到下游的处理节点。
    在下游处理节点中,Flink CDC会使用Flink的DataStream API或Table API来处理事件流。这些API可以将事件流视为无限的数据流,而不是一次性加载所有数据。因此,在处理事件流时,Flink CDC不会将所有的数据都加载到内存中。

    2023-07-29 16:05:46
    赞同 展开评论 打赏
  • 存在即是合理

    Flink CDC 增量监听binlog日志同步时,会将变更的数据加载到内存中,但是不会加载全部数据。如果增量同步不存在全部加载到内存的问题,那么可以先用维表的方式做完全量同步。然后再全部流表,但是启动时跳过快照阶段,直接指定位点启动一个新的任务做后续更新同步。

    2023-07-27 16:36:32
    赞同 展开评论 打赏

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

相关产品

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

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