提问者:小点点

Kafka连接器在发生故障时如何可靠?


我正在考虑使用Kafka连接器与创建自己的Kafka消费者/生产者来将一些数据从/移动到Kafka,我看到了Kafka连接器在可扩展性和容错性方面提供的价值。但是,我还没有找到连接器在“任务”由于某种原因失败时的确切表现。以下是几种情况:

  1. 对于接收器连接器(S3-Sink),如果它(任务)失败(在所有重试之后)无法成功将数据发送到目标(例如由于网络问题),则工作人员会发生什么?它会崩溃吗?它以后是否能够重新使用来自Kafak的相同数据?
  2. 对于源连接器(JDBC Source),如果它发送到Kafka失败,它会在以后重新处理相同的数据吗?它取决于源是什么吗?

上述问题的答案取决于我们谈论的是哪个连接器吗?


共1个答案

匿名用户

我认为,在Kafka 2.0中,他们引入了优雅错误处理的概念,它可以跳过错误消息或写入DLQ主题。

1)S3接收器可能会失败,它只会停止处理数据。但是,如果您解决了问题(对于可能出现的各种边缘情况),接收器本身正好一次交付到S3。消耗的偏移量存储为常规消费者偏移量偏移量,直到文件上传完成才会提交到Kafka。但是,很明显,如果您不在主题的保留期之前解决问题,您将丢失数据。

2)是的,这取决于源。我不知道JDBC连接器的语义学,但它确实取决于您使用的查询模式。例如,对于递增的时间戳,如果您尝试每5秒对范围内的所有行运行一次查询,我不相信它会重试旧的、错过的时间窗口

总体而言,故障恢复方案都依赖于正在连接的系统。有些错误是可恢复的,有些则不可恢复(例如,您的S3访问密钥被撤销,并且在您获得新的凭据集之前它不会写入文件)