Kafka 流基础解释
Kafka streams fundamentals explanation
我对 Kafka 流及其工作方式有一些疑问,我对一般的 Kafka 消费者和生产者范例有经验,但是,这是我第一次尝试使用 Kafka 流。
问题:
- 在一般的 Kafka 消费者模型中,我们订阅一个主题并从一个分区开始消费,为简单起见,假设我们有 1 个分区和 1 个消费者,现在如果我们想增加我们的处理,我们增加分区的数量和另外添加更多消费者,这在 Kafka Streams 中如何工作,如果我们增加分区,我们应该如何扩展应用程序,我们是否需要添加更多机器或我们是否需要做其他事情?
- 当我通过 Kafka 消费者使用数据时,我可能最终会对消息做一些事情,例如,我可能会查询 API 下载文件并写入 NFS 并转发消息或写入传入的消息值到数据库,然后将通知转发到另一个 Kafka 主题,如何解决相同的用例,我们不遵循
KAFKA -> KAFKA
的范例而是 KAFKA -> PROCESS(STORE IN DB) -> KAFKA
,Kafka Streams 可以吗甚至解决这个用例?
- 最后,如何处理异常以及如何管理偏移量。在永远 运行 的生产系统中,有无穷无尽的消息流,如果出现任何异常,比如由于任何网络中断,我们会关闭消费者并进行干净启动。如何使用 Kafka Stream 处理应用程序实现相同的功能?
消费者 API 仍在以完全相同的方式在幕后工作。要回答这个问题 - 您启动了更多 运行 个应用程序实例;这些不一定必须在完全不同的服务器上
不建议使用 Kafka Streams 进行不限于 Kafka-Kafka
交互的远程工作。至少不能不接受这会引入延迟,因此在进行依赖于时间 windows 的主题连接时不应这样做。
Kafka Connect 可以成为您将数据从主题获取到数据库的系统
同样,Kafka Streams 只是 Producer/Consumer API 之上的一层。您仍然会遇到相同的网络异常,或者如果您读取损坏的记录,则有
options for handling poison pill records
我对 Kafka 流及其工作方式有一些疑问,我对一般的 Kafka 消费者和生产者范例有经验,但是,这是我第一次尝试使用 Kafka 流。
问题:
- 在一般的 Kafka 消费者模型中,我们订阅一个主题并从一个分区开始消费,为简单起见,假设我们有 1 个分区和 1 个消费者,现在如果我们想增加我们的处理,我们增加分区的数量和另外添加更多消费者,这在 Kafka Streams 中如何工作,如果我们增加分区,我们应该如何扩展应用程序,我们是否需要添加更多机器或我们是否需要做其他事情?
- 当我通过 Kafka 消费者使用数据时,我可能最终会对消息做一些事情,例如,我可能会查询 API 下载文件并写入 NFS 并转发消息或写入传入的消息值到数据库,然后将通知转发到另一个 Kafka 主题,如何解决相同的用例,我们不遵循
KAFKA -> KAFKA
的范例而是KAFKA -> PROCESS(STORE IN DB) -> KAFKA
,Kafka Streams 可以吗甚至解决这个用例? - 最后,如何处理异常以及如何管理偏移量。在永远 运行 的生产系统中,有无穷无尽的消息流,如果出现任何异常,比如由于任何网络中断,我们会关闭消费者并进行干净启动。如何使用 Kafka Stream 处理应用程序实现相同的功能?
消费者 API 仍在以完全相同的方式在幕后工作。要回答这个问题 - 您启动了更多 运行 个应用程序实例;这些不一定必须在完全不同的服务器上
不建议使用 Kafka Streams 进行不限于
Kafka-Kafka
交互的远程工作。至少不能不接受这会引入延迟,因此在进行依赖于时间 windows 的主题连接时不应这样做。 Kafka Connect 可以成为您将数据从主题获取到数据库的系统同样,Kafka Streams 只是 Producer/Consumer API 之上的一层。您仍然会遇到相同的网络异常,或者如果您读取损坏的记录,则有 options for handling poison pill records