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