2021年大数据Kafka(十):kafka生产者数据分发策略

代码 代码 1403 人阅读 | 0 人回复

<
  全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 
  新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点。
目录
系列历史文章
生产者数据分发策略
策略一:用户指定了partition
策略二:用户发生数据的时候指定了key没有指定partition ,采用hash算法
策略三: 当用户既没有指定partition也没有key。采用粘性的划分策略(Sticky Partitioning Strategy)方案(2.4以上版本新特性,老版本为轮询)
总结

系列历史文章

2021年大数据Kafka(十):kafka生产者数据分发策略
2021年大数据Kafka(九):kafka消息存储及查询机制原理
2021年大数据Kafka(八):Kafka如何保证数据不丢失
2021年大数据Kafka(七):Kafka的分片和副本机制
2021年大数据Kafka(六):❤️安装Kafka-Eagle❤️
2021年大数据Kafka(五):❤️Kafka的java API编写❤️
2021年大数据Kafka(四):❤️kafka的shell命令使用❤️
2021年大数据Kafka(三):❤️Kafka的集群搭建以及shell启动命令脚本编写❤️
2021年大数据Kafka(二):❤️Kafka特点总结和架构❤️
2021年大数据Kafka(一):❤️消息队列和Kafka的基本先容❤️

生产者数据分发策略

          kafka在数据生产的时候,有一个数据分发策略。默认的情况使用DefaultPartitioner.class类。这个类中就是定义数据分发的策略  
2021年大数据Kafka(十):kafka生产者数据分发策略 155356ppp8htn2z2hn2pt5.jpg

策略一:用户指定了partition

          生产就不会调用DefaultPartitioner.partition() 方法 , 数据分发策略的时候,可以指定数据发往哪个 partition 。当ProducerRecord 的构造参数中有 partition 的时候,就可以发送到对应 partition   
2021年大数据Kafka(十):kafka生产者数据分发策略 155356awpo396p4z9y1ywl.jpg

策略二:用户发生数据的时候指定了key没有指定partition ,采用hash算法

  注意: 如果 key 一直不变,同一个 key 算出来的 hash 值是个固定值。如果是固定值,这种 hash 取模就没有意义。 Utils.toPositive(Utils.murmur2(keyBytes)) % numPartitions  
2021年大数据Kafka(十):kafka生产者数据分发策略 155357t5w1so648gninmsg.jpg

策略三: 当用户既没有指定partition也没有key。采用粘性的划分策略(Sticky Partitioning Strategy)方案(2.4以上版本新特性,老版本为轮询)

Sticky Partitioning Strategy会随机地选择一个分区并会尽可能地坚持使用该分区——即所谓的粘住这个分区。
原因:
  kafka 在发送消息的时候 , 采用批处理方案 , 当到达一批后进行分送 , 但是如果一批数据中有不同分区的数据 , 就无法放置到一个批处理中, 而老版本中轮询方案 , 就会导致一批数据被分到多个小的批次中 , 从而影响效率 , 故在新版本中 , 采用这种粘性的划分策略  
2021年大数据Kafka(十):kafka生产者数据分发策略 155357jq5wtv22kztsg4qh.jpg

总结

2021年大数据Kafka(十):kafka生产者数据分发策略 155357y7qhxppw2hhj4khk.jpg


<ul>
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,按照目前互联网开放的原则,我们将在不通知作者的情况下,转载文章;如果原文明确注明“禁止转载”,我们一定不会转载。如果我们转载的文章不符合作者的版权声明或者作者不想让我们转载您的文章的话,请您发送邮箱:Cdnjson@163.com提供相关证明,我们将积极配合您!
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并自负版权等法律责任。
回复 关闭延时

使用道具 举报

 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则