Kafka学习-----Kafka生产者:分区策略和可靠性保障

一.Kafka分区策略

Kafka学习-----Kafka生产者:分区策略和可靠性保障

1.分区原因

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

2.分区的原则

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


![在这里插入图片描述](https://img-blog.****img.cn/20201108105318788.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2J1cHR0dWxvbmdtaW5n,size_16,color_FFFFFF,t_70#pic_center)
  1. 指明 partition 的情况下,直接将指明的值直接作为 partiton 值;
  2. 没有指明 partition 值但有 key 的情况下,将 key 的 hash 值与 topic 的 partition 数进行取余得到 partition 值;
  3. 既没有 partition 值又没有 key 值的情况下,第一次调用时随机生成一个整数(后 面每次调用在这个整数上自增),将这个值与 topic 可用的 partition 总数取余得到 partition 值,也就是常说的 round-robin 算法。