我正在考虑使用Kafka连接器和创建我自己的Kafka消费者/生产者来将一些数据从Kafka转移到Kafka,我看到了Kafka连接器在可扩展性和容错方面所提供的价值。但是,如果“任务”由于某种原因而失败,我无法找到连接器的确切行为。以下是几种场景:
以上问题的答案是否取决于我们正在讨论的连接器?
发布于 2018-08-22 23:41:21
在Kafka 2.0中,我认为,他们引入了优雅错误处理的概念,它可以跳过错误消息或写入DLQ主题。
1) S3接收器可能会失败,它只会停止处理数据。但是,如果您修复了这个问题(对于可能出现的各种边缘情况),接收器本身恰好是一次传递到S3。所使用的偏移量存储为常规的使用者偏移量,在文件上传完成之前不会提交给Kafka。但是,很明显,如果在主题保留期之前不修复该问题,则会丢失数据。
2)是的,这取决于来源。我不知道JDBC连接器的语义,但它实际上取决于您使用的是哪种查询模式。例如,对于递增时间戳,如果您尝试每5秒对一个范围内的所有行运行一个查询,我不相信它会重试旧的、丢失的时间窗口。
总的来说,故障恢复场景都依赖于连接到的系统。有些错误是可恢复的,而有些则是不可恢复的(例如,您的S3访问密钥会被撤销,并且在您获得新的凭据集之前不会写入文件)
https://stackoverflow.com/questions/51973516
复制相似问题