如何构建批流一体数据融合平台的一致性语义保证?( 八 )

第一,所有数据的吞吐都经过 MQ,所以 MQ 会成为一个吞吐瓶颈。

第二,因为是一个完全的流式架构,所以针对批量同步,你需要引入一些边界消息来实现一些批量控制。

第三,Kafka 是一个有持久化能力的消息队列,这意味着数据留存是有极限的。比如,你将源端的读到 Kafka Topic 里面,Topic 不会无限的大,有可能会造成数据容量超限,导致一些数据丢失。

第四,当批量同步在中间因为某种原因被打断,无法做续传时,你需要进行重传。在重传过程中,首先要将数据进行清理,如果基于消息队列模式,清理过程就会带来额外的工作。你会面临两个困境:要么清空原有的消息队列,要么你创造新的消息队列。这肯定不如像直接使用一些批量同步框架那样来的直接。

二、一致性语义保证

用户需求

先简单介绍一下用户对于数据同步方面的一些基本要求:

第一种需求,批量同步需要以一种事务性的方式完成同步

推荐阅读