请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

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

正在回答 回答被采纳积分+3

3回答

loserwang 2023-01-10 15:40:04

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

1 回复 有任何疑惑可以回复我~
Michael_PK 2022-10-31 00:45:25

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

0 回复 有任何疑惑可以回复我~
Michael_PK 2022-10-31 00:44:28

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

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号