如何保证消费kafka多分区数据时是有序的?
来源:13-4 CH表如何设计
慕用5382733
2022-10-29
用topic+partition+offset做主键,那怎么知道不同partition之间的先后顺序呢?如果我后面推送的数据先消费了,后消费的数据是不是更早的数据?这样不就乱掉了吗
写回答
3回答
-
loserwang
2023-01-10
纯靠kafka的时间是无法保证全局有序,只能保证单分区有序。但是可以根据产生消息对象内部的时间(即生产消息时写入的EventTime),然后通过watermark来批量消费,保证窗口有序。但是难免会有特殊情况导致消息太晚到达,对于超出太多的消息(lateness),收集到数据库进行一些祢补的处理。
10 -
Michael_PK
2022-10-31
flink是能保证状态的一致性的,因为通过checkpoint能完成,完成之后会提交到operatorstate中,如果有挂的,那么就会从kafka中进行重新消费
00 -
Michael_PK
2022-10-31
后面进来的数据先消费是非常有可能的,网络抖动啥的,很可能会导致消息乱序问题,那就需要结合wm来进行处理
00
相似问题