如何保证消费kafka多分区数据时是有序的?

来源:13-4 CH表如何设计

慕用5382733

2022-10-29

用topic+partition+offset做主键,那怎么知道不同partition之间的先后顺序呢?如果我后面推送的数据先消费了,后消费的数据是不是更早的数据?这样不就乱掉了吗

写回答

3回答

loserwang

2023-01-10

纯靠kafka的时间是无法保证全局有序,只能保证单分区有序。但是可以根据产生消息对象内部的时间(即生产消息时写入的EventTime),然后通过watermark来批量消费,保证窗口有序。但是难免会有特殊情况导致消息太晚到达,对于超出太多的消息(lateness),收集到数据库进行一些祢补的处理。

1
0

Michael_PK

2022-10-31

flink是能保证状态的一致性的,因为通过checkpoint能完成,完成之后会提交到operatorstate中,如果有挂的,那么就会从kafka中进行重新消费

0
0

Michael_PK

2022-10-31

后面进来的数据先消费是非常有可能的,网络抖动啥的,很可能会导致消息乱序问题,那就需要结合wm来进行处理

0
0

Flink+ClickHouse 玩转企业级实时大数据开发

已经在做大数据,Flink助力轻松提薪;尚未入行,让你弯道超车

1024 学习 · 225 问题

查看课程