CDC领域的消息对象膨胀率与数据结构设计
消息膨胀
消息对象膨胀率
原始从日志解析出来的内容主要是字节流,在数据同步过程中反序列化成具体的Java对象,占用的内存与实际字节流占用内存的比值,就是我们指的CDC领域中的消息对象膨胀率。
1 | 消息对象膨胀率=CDC程序中消息JAVA对象占用的内存字节数/原始字节流占用的字节数 |
膨胀率与能力
CDC工具需要提供强大的数据处理能力,那么必然涉及消息对象膨胀。膨胀后的对象包含丰富的元信息和可读可处理的值对象。以CloudCanal为例,这些能力包含库表列裁剪映射、条件过滤、虚拟列、自定义主键、自定义代码等。
膨胀率与性能
更好的内存利用率和同步性能一定要关注消息对象膨胀率。如果在满足CDC产品能力诉求的情况下,优化消息对象膨胀率,对同步性能来说十分重要。
CloudCanal消息膨胀
测试表
平均行长2~3KB
1 | CREATE TABLE `cms_cw_zd_ws` ( |
全量
原始对象 | CC内存对象 | 消息对象膨胀率(平均值) |
---|---|---|
Value Map (Value通过RS取得均为String) | RdbRecord | 2.5 |
增量
原始对象 | CC内存对象 | 消息对象膨胀率(平均值) |
---|---|---|
字节流 | Event (ByteString) | 7 |
Event | ParsedEntry | 4 |
累计28倍