0
点赞
收藏
分享

微信扫一扫

Kafka生产者是怎么把数据给我们分区的

伽马星系 2022-07-12 阅读 79

分区的目的

1.方便扩展:每个Partition可以通过调整以适应它所在的机器,而一个topic又可以有多个Partition组成,因此整个集群就可以适应任意大小的数据了;
2.提高并发:以partition为读写单位,可以多个消费者同时消费数据,提高了消息的处理效率。

分区的原则

我们需要将producer发送的数据封装成一个ProducerRecord****对象。

Kafka生产者是怎么把数据给我们分区的_数据

  1. 如果发送数据的时候指定了partition,那么直接就将数据发送到对应的partition
  2. 如果发送数据的时候没有指定partition,但是指定了key,那么就将key的hash值取模与topic的partition数量(如果这个topic总共有三个partition,那么就是3)进行取余就可以得到partition的值,然后就往这个partiton写数据.
  3. 既没有 partition 值又没有 key 值的情况下,第一次调用时随机生成一个整数(后面每次调用在这个整数上自增),将这个值与 topic 可用的 partition 总数取余得到 partition 值,把数据存到这个partition分区,也就是常说的 round-robin 算法。


举报

相关推荐

0 条评论