问题
先简述一下为什么我们会出现这样的情况:
我们消费kafka数据时,每消费一条做的操作比较多,比如减少调用三方接口、连表查询等,这样会导致消费一条数据的速度比较慢。当上游数据产生大量消息(比如刷数据等),就会产生消息堆积,消费不及时,kafka数据有过期时间,一些数据就丢失了。
怎么定位的问题呢?我们查看丢失数据的那个时间的消费日志,发现消费的消息是两天前的,也就是说17号还在消费15号的数据。
经验
1、消费kafka消息时,应该尽量减少每次消费时间,可通过减少调用三方接口、读库等操作,从而减少消息堆积的可能性。
2、如果消息来不及消费,可以先存在数据库中,然后逐条消费(还可以保存消费记录,方便定位问题)
3、每次接受kafka消息时,先打印出日志,包括消息产生的时间戳。
那个…消费数据处处是坑,还是得通过实际经验来积累,我会不断踩坑不断更新的