kafka流/表、globalktable、borkers和分区中的相关性是什么



我正在研究kafka流、表、globalktable等。现在我对此感到困惑。

什么是GlobalKTable?

但总的来说,如果我有一个带有N个分区的主题和一个kafka流,在我发送了一些关于该主题的数据后,我会有多少流(分区?(?我做了一些尝试,我注意到比赛是1:1。但若我让话题在不同的经纪人身上复制呢?谢谢大家

我会尽量回答您的问题,因为您在这里列出了这些问题。

GlobalKTable在Kafka Streams应用程序的每个实例中都有可用的所有分区。但是KTable是在应用程序的所有实例上进行分区的。换句话说,您的Kafka Streams应用程序的所有实例都可以访问GlobalKTable中的所有记录;因此,它用于更多的静态数据,并且更多地用于联接中的查找记录。

对于具有N个分区的主题,如果您有一个Kafka Streams应用程序,它将使用输入主题中的所有记录。如果您要启动流应用程序的另一个实例,那么每个应用程序将处理一半数量的分区,由于工作的并行化,您将获得更高的吞吐量。

例如,如果输入主题A有四个分区和一个Kafka Streams应用程序,那么单个应用程序将处理所有记录。但是,如果您要启动同一个Kafka Streams应用程序的两个实例,那么每个实例都将处理来自2个分区的记录,工作负载将在具有相同应用程序id的所有运行实例中分配。

默认情况下,主题在Kafka中跨不同的代理进行复制,其中3是默认的复制级别。复制级别为3意味着给定分区的记录存储在该分区的引导代理和其他两个跟随代理上(假设为三节点代理集群(。

希望这能澄清一些问题。

-票据

最新更新