在 Flink CDC 中,默认的 TTL(Time-to-Live)缓存是用于存储和管理数据源(如 MySQL、PostgreSQL 等)中的变更事件的。TTL 缓存用于在内存中保留最新的数据库变更,并为 Flink CDC 提供快速访问和处理这些变更的能力。
具体来说,TTL 缓存主要包含以下内容:
数据源表的快照:TTL 缓存会定期从数据源中获取完整的表数据快照,并将其存储在内存中。这样可以提供一个基线,用于比较和识别后续的变更事件。
变更事件的缓存:当数据源中发生数据变更时,CDC 会捕获并记录这些变更事件。这些变更事件会被存储在 TTL 缓存中,以便 Flink CDC 可以进行进一步的处理和分析。
通过将最新的表快照和变更事件存储在内存中,TTL 缓存可以提供以下功能:
快速恢复:当 CDC 任务启动或重启时,它可以使用最近的表快照作为基线,并从变更事件中重放这些变更,以确保任务的消费状态与源数据一致。
实时变更捕获:CDC 任务可以持续监控和捕获数据源中的变更事件,并及时将其发送到下游处理逻辑,以实现实时数据流处理。
需要注意的是,TTL 缓存的大小和存储策略可以根据具体的需求进行配置。你可以调整 TTL 缓存的参数来适应不同的数据源和任务场景,例如通过增加缓存大小来提高性能或延长缓存保留时间。
在 Flink CDC 中,默认情况下,TTL(Time To Live)机制是针对抽取的 MySQL binlog 事件进行缓存的。TTL 机制会根据事件的时间戳和当前时间计算出事件的生存时间,当事件的生存时间超过一定阈值后,就会被自动删除,以释放缓存空间。
具体来说,Flink CDC 中的 TTL 机制会根据以下两个参数来计算事件的生存时间:
binlog.cache.ttl.ms:该参数定义了 binlog 事件的缓存时间(单位为毫秒)。如果一个 binlog 事件在缓存中的时间超过了该参数定义的时间,就会被删除。
binlog.cache.max.size:该参数定义了 binlog 事件缓存的最大大小。当缓存中的事件数量超过了该参数定义的大小时,最早的事件会被删除,以释放缓存空间。
新的jdbc connector没有lookup.cache.ttl选项了。
https://nightlies.apache.org/flink/flink-docs-release-1.17/docs/connectors/table/jdbc/#lookup-cache
此回答整理至钉群“Flink CDC 社区”。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。