flinkcdc2.4.2有没有解决维表关联的痛点呀?就是不设置ttl会导致ckp越来越大,设置了会丢失数据的情况。强烈建议我们cdc的社区能优化下维表关联功能,如果不能作为维表使用,cdc的使用性大大减低
你可以看看flink 1.18对于不同流的state的ttl设置,更推荐的是cdc去 look up join 一个性能更强的olap数据库,只读数据库等,或者paimon。一般指的state清理造成的数据丢失问题,大概率你用的是双流join,而不是维表join,此回答整理自钉群“Flink CDC 社区”
Apache Flink的CDC (Change Data Capture) 2.4.2版本并没有专门针对维表关联的痛点进行优化。对于你提到的"不设置ttl会导致ckp越来越大,设置了会丢失数据"的问题,这主要是由于Flink的State TTL机制和Checkpoint机制的设计导致的。
Flink的State TTL机制是为了防止状态过大而导致内存溢出,它会定期清理过期的状态。然而,如果在处理CDC数据时,状态被频繁地更新,并且每个状态的TTL都很短,那么Checkpoint的大小就会迅速增大。
另一方面,如果设置了过短的TTL,那么在处理CDC数据时,可能会因为状态被过早地清理而导致数据丢失。这是因为在Flink的Checkpoint过程中,状态会被持久化到磁盘上,然后在后续的运算中,会从磁盘上加载这些状态。如果状态被过早地清理,那么在后续的运算中,就可能无法加载到这些状态,从而导致数据丢失。
对于这种情况,一种可能的解决方案是,优化你的应用程序,以减少状态的数量和大小。例如,你可以考虑使用更高效的序列化格式,或者减少不必要的状态更新。此外,你也可以考虑使用更长的TTL,以减少Checkpoint的大小,但同时也要确保在Checkpoint期间,有足够的内存来存储所有的状态。
另外,你也可以考虑使用其他的CDC解决方案,例如Debezium或Canal,它们可能提供了更好的维表关联支持。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。