我想清楚地指出,Kafka平行模型的镜子制造商。
就我对消费者的理解而言:
消费者群体是一组消费者。组中的每个消费者都可以阅读一个或多个主题。
组的使用者可以有多个流,即从主题中读取的线程数,最佳做法是使用一个线程进行分区。
我的疑问是:我们是使用单线程的多个用户,还是使用多线程的一个用户?消费者群体是指一组消费者还是一个多线程消费者?
我发现很难从文档中指出这些问题,我想知道我是否错了。
这些对价是双重有效的吗?甚至在生产者方面?
我想清楚地指出,Kafka平行模型的镜子制造商。
就我对消费者的理解而言:
消费者群体是一组消费者。组中的每个消费者都可以阅读一个或多个主题。
组的使用者可以有多个流,即从主题中读取的线程数,最佳做法是使用一个线程进行分区。
我的疑问是:我们是使用单线程的多个用户,还是使用多线程的一个用户?消费者群体是指一组消费者还是一个多线程消费者?
我发现很难从文档中指出这些问题,我想知道我是否错了。
这些对价是双重有效的吗?甚至在生产者方面?
1条答案
按热度按时间70gysomp1#
mirrormaker(mm)中的螺纹模型如下:
mm部署了n个线程。
每个线程示例化并使用一个使用者。这是mm线程和使用者之间的1:1Map。
每个线程共享同一个生产者。这是线程和生产者之间的n:1Map。
因此,您定义为mm属性的流数(由传递给的值给定)
num.streams
属性)对应于mm螺纹的数量,如上所述,也对应于耗电元件的数量。现在,您的特定问题的答案是,这个数字还对应于使用来自主题和分区的记录的线程(或流)总数。
为什么这一点在mm中有点混乱,因为它提供了使用旧的高级消费者或新消费者的选项。但在这两种情况下,使用记录的线程总数都是
num.streams = N
分别出于以下原因:当使用旧的使用者高级api时,每个使用者部署来使用记录的线程数由mm硬编码为1个线程(您可以通过查看传递给
createMessageStreamsByFilter
方法)。由于每个mm线程示例化一个使用者,因此最终会有n个线程使用记录。在使用新的使用者api的情况下,使用者api不会在后台部署线程来使用记录(有一个心跳线程被示例化,但与讨论无关)。因此,这里更简单的是,使用记录的线程数等于mm线程数,这也是因为mm将一个线程Map到它示例化的每个使用者。
希望这有帮助。