Ben*_*zzo 1 apache-kafka kafka-consumer-api kafka-producer-api apache-kafka-connect
我想清楚地指出一个Mirror Maker的Kafka Parallelism模型.
对于我在消费者方面的理解:
消费者集团是一组消费者.该组的每个消费者都可以从一个或多个主题中读取.
该组的消费者可以拥有多个流,即从主题中读取的线程数,最佳做法是将一个线程用于分区.
我的疑问是:我们是否将多个线程的消费者与单线程或一个消费者挂钩?消费者群体是指一组消费者还是一个多线程消费者?
我发现很难从文档中指出这些问题,我想知道我是不是错了.
即使在生产者方面,这些考虑因素也是双向的吗?
MirrorMaker(MM)中的线程模型如下:
MM部署N个线程.
因此,您定义为MM属性的流的数量(由传递给num.streams属性的值给出)对应于MM线程的数量,并且如上所述也与消费者的数量相对应.
现在,您的具体问题的答案是,此数字还对应于消耗主题和分区记录的线程(或流)的总数.
为什么这种情况在MM中有点令人困惑,因为它让您可以选择使用旧的高级消费者或新的消费者.但在这两种情况下,消耗记录的线程总数num.streams = N分别是由于以下原因:
当使用旧的使用者高级API时,每个消费者部署以消耗记录的线程数由MM硬编码为1个线程.(您可以通过查看传递给MirrorMaker.scala中的createMessageStreamsByFilter方法的参数来确认这一点).由于每个MM线程实例化一个使用者,我们最终会有N个线程消耗记录.
在使用新的消费者API的情况下,消费者API不会在消费者API下部署任何线程来消费记录(实例化心跳线程,但这与讨论无关).因此,这里消耗记录的线程数等于MM线程的数量更直接,因为MM将一个线程映射到它实例化的每个消费者.
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
827 次 |
| 最近记录: |