Igo*_* K. 20 apache-kafka kafka-consumer-api kafka-producer-api
我正在寻找关于这个问题的一些澄清.在Kafka文档中,我发现了以下内容:
Kafka仅对分区内的消息提供总订单,而不是在主题中的不同分区之间.对于大多数应用程序而言,按分区排序与按键分区数据的能力相结合就足够了.但是,如果您需要对邮件进行总订单,则可以使用仅包含一个分区的主题来实现,但这意味着每个使用者组只有一个使用者进程.
所以这是我的问题:
这是否意味着如果我想拥有超过1个消费者(来自同一组)从一个主题中读取我需要超过1个分区?
这是否意味着我需要相同数量的分区作为同一组的消费者数量?
有多少消费者可以从一个分区读取?
关于API的关键和分区之间的关系也有一些问题.我只看了.net API(特别是来自MS的API),但看起来像模仿Java API.我看到当使用生产者向主题发送消息时,有一个关键参数.但是,当消费者从主题中读取时,存在分区号.
提前致谢.
obl*_*ion 22
这是否意味着如果我想拥有超过1个消费者(来自同一组)从一个主题中读取我需要超过1个分区?
让我们看看kafka的以下属性:
有了这些特性,卡夫卡是巧妙地能够同时提供ordering guarantees和load balancing对消费者进程池.
要回答你的问题,是的,在同一群体的背景下,如果你想拥有N consumers,你必须拥有at least N partitions.
这是否意味着我需要相同数量的分区作为同一组的消费者数量?
我认为这在第一个答案中有所解释.
有多少消费者可以从一个分区读取?
该number of consumers可以从一个分区读取总是等于number of consumer groups订阅该主题.
关于API的密钥和分区之间的关系
首先,我们必须明白,producer负责选择分配给主题中哪个分区的记录.
现在,让我们看看制作人是如何做到的.首先,让我们看一下类的定义ProducerRecord.java:
public class ProducerRecord<K, V> {
private final String topic;
private final Integer partition;
private final Headers headers;
private final K key;
private final V value;
private final Long timestamp;
}
Run Code Online (Sandbox Code Playgroud)
在这里,我们必须从班级中了解的领域是partition.
从文档中,
partition number指定了有效,partition则在发送记录时将使用该有效.key存在a,则将使用a选择分区hash of the key.key也不partition存在,则将在a中分配分区round-robin fashion.小智 15
伊戈尔,
分区增加了Kafka主题的并行性.任何数量的消费者/生产者都可以使用相同的分区.它由应用程序层来定义协议.卡夫卡保证交货.关于API,您可能希望查看Java文档,因为它们可能更完整.根据我的经验:
| 归档时间: |
|
| 查看次数: |
22830 次 |
| 最近记录: |