如果生产者宕机,卡夫卡会怎么做?

What would Kafka do if producer goes down?

我对 Kafka 架构有点困惑。我们想捕获 Twitter 流 API。我们遇到了这个 https://github.com/NFLabs/kafka-twitter/blob/master/src/main/java/com/nflabs/peloton2/kafka/producer/TwitterProducer.java 推特制作人。

我正在考虑的是如何设计系统以使其具有容错性。

如果生产者宕机,是否意味着我们丢失了一些数据?如何防止这种情况发生?

如果您链接到的生产者停止 运行,来自 Twitter API 的新数据将不会进入 Kafka。我不确定 Twitter Streaming API 是如何工作的,但它可能会获取历史数据,允许您将所有数据取回到生产者失败时的点。

另一种选择是使用 Kafka Connect,这是一种分布式容错服务,用于将数据源和接收器连接到 Kafka。 Connect 公开了一个 higher-level API 并在幕后使用了 out-of-the-box producer/consumer API。 documentation 对 Connect 的解释非常详尽,因此请阅读并从那里开始。