我正在考虑使用Kafka连接器,而不是创建自己的Kafka使用者/生产者,以将一些数据往返于Kafka,并且我看到Kafka连接器在可伸缩性和容错能力方面的价值。但是,如果“任务”由于某种原因失败,我还无法找到连接器的确切行为。这有两种情况:
对以上问题的回答取决于我们在谈论哪个连接器吗?
答案 0 :(得分:0)
我认为,在Kafka 2.0中,他们引入了优美的错误处理的概念,该概念可以跳过错误消息或写入DLQ主题。
1)S3接收器可能会失败,并且只会停止处理数据。但是,如果您解决了该问题(对于可能出现的各种情况),则接收器本身恰好一次交付给S3。消耗的偏移量存储为常规的使用者偏移量偏移量,直到文件上传完成后才会提交给Kafka。但是,很明显,如果您在主题的保留期之前未解决问题,则可能会丢失数据。
2)是,这取决于来源。我不知道JDBC连接器的语义,但这实际上取决于您使用的查询模式。例如,对于递增的时间戳,如果您尝试每5秒对范围内的所有行运行一次查询,我认为它不会重试旧的错过的时间窗口
总体而言,故障恢复方案均取决于所连接的系统。某些错误是可以恢复的,而某些错误则不能恢复(例如,您的S3访问密钥被吊销,直到获得新的凭据集,它才会写入文件)