gpt4 book ai didi

apache-kafka - 卡夫卡流并发?

转载 作者:行者123 更新时间:2023-12-03 11:51:37 26 4
gpt4 key购买 nike

我有一些基本的 Kafka Streaming 代码,可以从一个主题读取记录,进行一些处理,然后将记录输出到另一个主题。

Kafka 流如何处理并发?一切都在一个线程中运行吗?我在文档中没有看到这一点。

如果它是单线程的,我想要多线程处理的选项来处理大量数据。

如果它是多线程的,我需要了解它是如何工作的以及如何处理资源,例如 SQL 数据库连接应该在不同的处理线程中共享。

相对于其他选项(Spark、Akka、Samza、Storm 等),是否不建议将 Kafka 的内置流 API 用于高容量场景?

最佳答案

2020 年 10 月更新:我写了一个 four-part blog series on Kafka fundamentals我建议阅读这些问题。对于这个问题,请查看 part 3 on processing fundamentals .
对于你的问题:

How does Kafka streaming handle concurrency? Is everything run in a single thread? I don't see this mentioned in the documentation.


这在 http://docs.confluent.io/current/streams/architecture.html#parallelism-model 中有详细记录。 .我不想逐字复制粘贴到这里,但我想强调一下,恕我直言,要理解的关键元素是分区(参见 Kafka 的主题分区,在 Kafka Streams 中被概括为“流分区”,而不是全部正在处理的数据流将通过 Kafka),因为分区目前决定​​了 Kafka(代理/服务器端)和使用 Kafka Streams API(客户端)的流处理应用程序的并行性。

If it's single threaded, I would like options for multi-threaded processing to handle high volumes of data.


处理分区将始终仅由单个“线程”完成,这可确保您不会遇到并发问题。但...

If it's multi-threaded, I need to understand how this works and how to handle resources, like SQL database connections should be shared in different processing threads.


...因为 Kafka 允许一个主题有多个分区,所以你可以并行处理。例如,如果一个主题有 100 个分区,那么最多 100 个流任务(或者,有些过于简化:最多 100 台不同的机器每台运行一个应用程序实例)可以并行处理该主题。同样,每个流任务都将获得对 1 个分区的独占访问权限,然后它将对其进行处理。

Is Kafka's built-in streaming API not recommended for high volume scenarios relative to other options (Spark, Akka, Samza, Storm, etc)?


Kafka 的流处理引擎是绝对推荐的,并且在实践中也实际用于大容量场景。比较基准测试的工作仍在进行中,但在许多情况下,基于 Kafka Streams 的应用程序会更快。见 LINE engineer's blog: Applying Kafka Streams for internal message delivery pipeline LINE Corp 的一篇文章,亚洲最大的社交平台之一(超过 2.2 亿用户),其中描述了他们如何在生产中使用 Kafka 和 Kafka Streams API 来每秒处理数百万个事件。

关于apache-kafka - 卡夫卡流并发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39985048/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com