🗒️FlinkCDC3.0 数据模型
2024-1-15
| 2024-1-15
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
Event 是在 CDC3.0 框架在不同算子之间流转的数据模型。也就是 Source 产生 Event,Sink 使用 Event,而其他算子则是对 Event 进行转换。
下图列出了 Event 所有的实现类,可以看到,主要的实现类有 AddColumnEvent/AlterColumnTypeEvent/CreateTableEvent 等继承了 SchemaChangeEvent接口的代表表结构变更的事件,和 DataChangeEvent 这个代表数据变更的事件,以及 FlushEvent 这个用于刷写数据的特殊事件。
 
notion image

SchemaChangeEvent

下面贴上 CreateTableEvent 的代码。可以看到,其中包含了一个 Schema 对象,包含了建表的字段信息。FlinkCDC3.0 把表结构变更的信息也当成了一种数据模型。这样的好处是,可以对数据进行序列化,从而减少在不同节点之间传输的开销。在大数据量的场景下,这种优化效果更为明显。
notion image

DataChangeEvent

而对于 DataChangeEvent,则是包含了更新前后的完整数据。下面贴上了其内部变量,通过 OperationType 指示当前变更的类型,DataChangeEvent 可以代表 INSERT、DELETE、UPDATE 操作发生的数据变更。
notion image

FlushEvent

最后,FlushEvent 这个特殊事件是用来做什么的呢?为了提升性能,下游 Sink 常常会攒一批数据再一起写出。而在发生表结构变更以后,原来的写入方式往往需要做响应的更新来适配新的表结构(例如 JDBC 里需要调整 Statement),那就需要将原来的数据给刷写出去,才能写入新的数据。FlushEvent 就是用来指示下游刷写数据的。
 
FlinkCDC3.0 处理流程Janino 简介
Loading...
目录