Apache kafka kafka producer中的两种不同类型的分区
在Kafka producer中,我发送了两组不同的数据。对于这个主题,我有两个分区。第一个有钥匙,第二个没有钥匙。据我所知,密钥用于为数据创建分区。如果缺少密钥,将发送null,分区将通过循环调度进行 但问题是,如果我在某一特定时间段内交替发送带有和不带密钥的数据,会发生什么Apache kafka kafka producer中的两种不同类型的分区,apache-kafka,Apache Kafka,在Kafka producer中,我发送了两组不同的数据。对于这个主题,我有两个分区。第一个有钥匙,第二个没有钥匙。据我所知,密钥用于为数据创建分区。如果缺少密钥,将发送null,分区将通过循环调度进行 但问题是,如果我在某一特定时间段内交替发送带有和不带密钥的数据,会发生什么 除了使用键创建的分区外,是否会对分区执行循环调度,还是对所有两个分区执行循环调度?在分区中发送和存储记录时,Kafka有一个非常有组织的方案。正如您所提到的,密钥用于将相同的密钥记录发送到相同的分区。这有助于维护有关该主
除了使用键创建的分区外,是否会对分区执行循环调度,还是对所有两个分区执行循环调度?在分区中发送和存储记录时,Kafka有一个非常有组织的方案。正如您所提到的,密钥用于将相同的密钥记录发送到相同的分区。这有助于维护有关该主题的消息的时间顺序 在您的情况下,两个分区将数据存储为:
卡夫卡根据以下规则选择分区
我想纠正你。您说过密钥用于为数据创建分区发送带有消息的键基本上是为了获取特定字段的消息顺序。
- 如果key=null,数据将被循环发送(到分布式环境中的不同分区和不同代理,当然也发送到同一主题)
- 如果发送了一个密钥,那么该密钥的所有消息将始终转到同一分区
- 键可以是任何字符串或整数等。。以一个整数employee_id作为键为例
- 因此,employee_id 123将始终转到分区0,employee_id 345将始终转到分区1。这是由密钥散列算法决定的,该算法取决于分区的数量
- 如果您不发送任何密钥,那么消息可以使用循环技术发送到任何分区