Kafka生产者消息为什么分区?

Kafka生产者消息为什么分区?

主题下的每条消息只存在于其中的一个分区中,多个分区不会被多分保存。

  1. 其实分区的作用就是提供负载均衡的能力,或者说对数据进行分区的主要原因,就是为了实现系统的高伸缩性
  2. 并且不同的分区能够被放置到不同节点的机器上,而数据的读写操作也都是针对分区这个粒度而进行的,这样每个节点的机器都能独立地执行各自分区的读写请求处理。并且,我们还可以通过添加新的节点机器来增加整体系统的吞吐量。
    在这里插入图片描述

主题下的每条消息只存在于其中的一个分区中。

我们创建的ProducerRecord对象包括主题名称,键和值。 Kafka消息是键值对,虽然可以仅使用主题和值创建ProducerRecord,但默认情况下键设置为null,大多数应用程序生成带键的记录。

Key的使用有两个目标:
	它们是与消息一起存储的附加信息
	它们还用于决定将消息写入哪个主题分区。

具有相同Key的所有消息将转到同一分区。 这意味着如果进程只读取主题中的分区的子集,则单个键的所有记录将由同一进程读取。 要创建键值记录,只需创建一个ProducerRecord,如下所示

ProducerRecord<Integer, String> record =
            new ProducerRecord<>("CustomerCountry", "Laboratory Equipment", "USA");

使用null键创建消息时,您只需将key留空

    ProducerRecord<Integer, String> record =
            new ProducerRecord<>("CustomerCountry", "USA");

Kafka将对Key进行hash散列(使用其自己的hash算法,因此在升级Java时散列值不会更改),并使用结果将消息映射到特定分区。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只小小狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值