Flink CDC里SchemaManager的applySchemaChange方法如果接收到的ddl 没有在source指定的表中,会抛异常,这一块的设计逻辑是有什么考虑么?例如指定10张表,但数据库其它表是也会产生schema变更的,这种情况就会报错了是为什么?
Flink CDC 的 SchemaManager 的 applySchemaChange 方法设计成只处理在 source 指定的表中的 DDL 变更,主要是出于以下几个考虑:
性能优化:如果处理所有表的 DDL 变更,会消耗大量的资源和时间。通过限制只处理指定表中的变更,可以降低资源消耗,提高系统性能。
数据一致性:如果处理所有表的 DDL 变更,可能会导致数据的不一致。例如,如果在处理过程中,某个表的数据发生了变更,而这个变更没有被正确处理,那么在后续的处理过程中,这个表的数据可能会出现错误。通过限制只处理指定表中的变更,可以确保数据的一致性。
容错性:如果处理所有表的 DDL 变更,可能会导致某些表的 DDL 变更无法正确处理,从而导致整个系统的故障。通过限制只处理指定表中的变更,可以提高系统的容错性。
可维护性:如果处理所有表的 DDL 变更,可能会导致代码变得复杂和难以维护。通过限制只处理指定表中的变更,可以提高代码的可维护性。
因此,Flink CDC 的 SchemaManager 的 applySchemaChange 方法只处理在 source 指定的表中的 DDL 变更,是为了实现更好的性能、数据一致性、容错性和可维护性。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。