2021年大数据Kafka(十):kafka生产者数据分发策略
全網最詳細的大數據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如何保證數據不丟失
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類。這個類中就是定義數據分發的策略策略一:用戶指定了partition
????????生產就不會調用DefaultPartitioner.partition()方法, 數據分發策略的時候,可以指定數據發往哪個partition。當ProducerRecord 的構造參數中有partition的時候,就可以發送到對應partition上策略二:用戶發生數據的時候指定了key沒有指定partition ,采用hash算法
注意: 如果key一直不變,同一個key算出來的hash值是個固定值。如果是固定值,這種hash取模就沒有意義。Utils.toPositive(Utils.murmur2(keyBytes)) % numPartitions策略三: 當用戶既沒有指定partition也沒有key。采用粘性的劃分策略(Sticky Partitioning Strategy)方案(2.4以上版本新特性,老版本為輪詢)
Sticky Partitioning Strategy會隨機地選擇一個分區并會盡可能地堅持使用該分區——即所謂的粘住這個分區。
原因:
kafka在發送消息的時候, 采用批處理方案, 當達到一批后進行分送, 但是如果一批數據中有不同分區的數據, 就無法放置到一個批處理中, 而老版本中輪詢方案, 就會導致一批數據被分到多個小的批次中,從而影響效率, 故在新版本中, 采用這種粘性的劃分策略總結
- 📢博客主頁:https://lansonli.blog.csdn.net
- 📢歡迎點贊 👍 收藏 ?留言 📝 如有錯誤敬請指正!
- 📢本文由 Lansonli 原創,首發于 CSDN博客🙉
- 📢大數據系列文章會每天更新,停下休息的時候不要忘了別人還在奔跑,希望大家抓緊時間學習,全力奔赴更美好的生活?
總結
以上是生活随笔為你收集整理的2021年大数据Kafka(十):kafka生产者数据分发策略的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年大数据Kafka(九):kaf
- 下一篇: 2021年大数据Kafka(十一):❤️