企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
### Q: 读写一致性的逻辑是什么? * 读写事务一致性开和不开的区别:对于性能的影响,如果有主键就可以不开 * 源端一致性: * 利用kafka transaction message feature 保证单条数据只会读取一次。 * 数据和offset的提交会在同一个事务中,假如数据写入kafka,但是offset没有写入,则下游无法消费到该条数据。 * 对性能的影响: 会增加延时,因为数据需要等到对应的offset提交后才能被消费,所以端到端延时会上升。现在默认的offset提交周期为5分钟,所以数据的延时性最高可能会达到5分钟。 * 写入端一致性: * 如果是 JDBC 目的地,将会在目的地建立一张表进行记录; * 如果是 FTP/HDFS 目的地,将会采取内部的二阶段提交协议,假如数据写入完成,进度记录失败,将会回滚(删除)已写入的目的地的数据; * 如果是 Hive 目的地,将会记录进度 walog 到 hdfs,如果进度提交失败,将会回滚已写入目的地的数据; * 如果是 Kafka 目的地,将会使用 Kafka 的事务功能,在进度被提交成功前,Kafka 内的数据无法消费,以此保证写入数据的数据一致性。 * 对性能的影响:会增加一些额外的读写操作,具体影响范围需要根据具体的环境。 写入目的地有主键的话,可以依赖主键做去重,可以达到数据一致性。