Flink CDC 中没有冲突,它通过在事务中捕获数据变更来保证数据的一致性和准确性。
在Flink CDC中,冲突通常是指两个或多个数据源同时更新同一条记录时,导致的数据不一致问题,为了解决这个问题,Flink CDC提供了一些机制来处理冲突,以下是关于Flink CDC中冲突的一些详细信息:
1、冲突检测

Flink CDC通过比较不同数据源的更新操作来确定是否存在冲突,当发现冲突时,Flink CDC会抛出一个异常,以便用户处理冲突。
2、冲突解决策略
Flink CDC提供了两种冲突解决策略:覆盖(Overwrite)和合并(Merge)。
覆盖(Overwrite):当发生冲突时,使用最新的更新操作覆盖旧的更新操作,这种策略可能会导致数据丢失,因此需要谨慎使用。
合并(Merge):当发生冲突时,将两个更新操作合并为一个新的更新操作,这种策略可以保留所有更新操作的信息,但可能需要额外的计算资源。
3、自定义冲突解决策略
除了内置的覆盖和合并策略外,Flink CDC还允许用户自定义冲突解决策略,用户可以通过实现DebeziumDeserializationSchema.Builder接口中的mergeUpdateEvent方法来定义自己的冲突解决策略。

4、事务支持
Flink CDC支持事务处理,可以在多个数据源之间执行原子操作,这可以有效地避免因并发更新导致的冲突,要启用事务支持,需要在创建DebeziumDeserializationSchema对象时设置transactionalMode属性为true。
5、时间戳处理
在处理冲突时,Flink CDC会考虑事件的时间戳,如果两个更新操作具有相同的主键和时间戳,则认为它们发生了冲突,在这种情况下,用户可以选择覆盖或合并策略来解决冲突。
Flink CDC提供了多种机制来处理数据源之间的冲突,用户可以根据自己的需求选择合适的冲突解决策略,以确保数据的一致性和完整性。
