本文来说下kafka自定义分区相关的知识与内容,同时说下springboot整合kafka如何来实现自定义分区

文章目录

  • Kafka如何实现分区
  • Kafka集群是如何知道投递到哪个broker中
  • 默认分区策略

Kafka如何实现分区


Kafka集群是如何知道投递到哪个broker中

生产者在投递消息的时候传递key,然后根据key计算hash值存在到具体的broker中,如果是相同的key,最终投递消息都是同一个broker中。


默认分区策略

默认分区策略是:取正(bytearray生成32位hash值)%numpartitions。这个公式的结果是得到0-(numpartitions-1)间正整数的个数大致相等,也就是说kafka的默认分区策略是无论我们给定多少个分区,我们存放的数据基本上会平均的分到各个分区上

package org.apache.kafka.clients.producer.internals;import java.util.List;
import java.util.Map;
import org.apache.kafka.clients.producer.Partitioner;
import org.apache.kafka.common.Cluster;
import org.apache.kafka.common.PartitionInfo;
import org.apache.kafka.common.utils.Utils;public class DefaultPartitioner implements Partitioner {private final StickyPartitionCache stickyPartitionCache = new StickyPartitionCache();public DefaultPartitioner() {}public void configure(Map<String, ?> configs) {}public int partition(String topic, Object key, byte[] keyBytes, Object value, byte[] valueBytes, Cluster cluster) {if (keyBytes == null) {return this.stickyPartitionCache.partition(topic, cluster);} else {List<PartitionInfo> partitions = cluster.partitionsForTopic(topic);int numPartitions = partitions.size();return Utils.toPositive(Utils.murmur2(keyBytes)) % numPartitions;}}public void close() {}public void onNewBatch(String topic, Cluster cluster, int prevPartition) {this.stickyPartitionCache.nextPartition(topic, cluster, prevPartition);}
}

kafka自定义分区实战相关推荐

  1. Kafka自定义分区规则

    分区规则: public class Partitioner1 implements Partitioner{public Partitioner1() {}public int partition( ...

  2. Kafka分区分配策略(3)——自定义分区分配策略

    接上文: 1.[Kafka分区分配策略(1)--RangeAssignor] 2.[Kafka分区分配策略(2)--RoundRobinAssignor和StickyAssignor] 欢迎支持笔者新 ...

  3. kafka模拟生产-消费者以及自定义分区

    2019独角兽企业重金招聘Python工程师标准>>> 基本概念 kafka中的重要角色   broker:一台kafka服务器就是一个broker,一个集群可有多个broker,一 ...

  4. java kafka 设置分区_Java kafka如何实现自定义分区类和拦截器

    Java kafka如何实现自定义分区类和拦截器 2.producer配置文件指定,具体的分区类 // 具体的分区类 props.put(ProducerConfig.PARTITIONER_CLAS ...

  5. java kafka 分区_Java kafka如何实现自定义分区类和拦截器

    生产者发送到对应的分区有以下几种方式: (1)指定了patition,则直接使用:(可以查阅对应的java api, 有多种参数) (2)未指定patition但指定key,通过对key的value进 ...

  6. SpringBoot整合kafka之kafka分区实战

    本文来说下SpringBoot整合kafka之kafka分区实战 文章目录 准备工作 程序代码 程序测试 本文小结 准备工作 当然我们也可以不手动创建topic,在执行代码kafkaTemplate. ...

  7. kafka内置分区及自定义分区

    内置分区策略 1.如果指定的partition,那么直接进入该partition 2.如果没有指定partition,但是指定了key,使用key的hash选择partition 3.如果既没有指定p ...

  8. kafka自定义生产者分区器、自定义消费者分区器

    目录 1 默认分区 1.1 键key的作用 1.2 键的分区 2 生产者自定义分区 2.1 使用场景分析 2.2 自定义分区器要实现Partitioner接口 2.3 生产者使用分区器 3 消费者自定 ...

  9. 21,spark sql 测试 : 1.4G 文件实战,测试耗时多少,先分区,再在分区内计算,用列内容分区( 这是一个很魔幻的问题 ),自定义分区

    一 ,常规问题 : 1 ,表关联,数据过滤 : sql select stock.area,goods.smallLei,goods.typeColorId, weekofyear(to_date(s ...

最新文章

  1. HDU 2216(简单BFS)
  2. ASP.NET数据绑定技术
  3. Mysql忘记用户密码的解决办法
  4. Thymeleaf——访问静态资源(static)解决方案
  5. Vue入门到TodoList练手
  6. 通过扫码打开IOS的App Store下载APP(Android版暂时没找到解决方法)
  7. 揭密 GaussDB T 主备物理复制搭建过程(全)
  8. HDU2504 又见GCD
  9. redhat 替换centos yum源
  10. css3波浪js特效代码
  11. python之window下安装python2版的pyv8库 (window install python2 pyv8)
  12. SPI通信协议简要介绍
  13. STP生成树/BPDU保护小实验
  14. 网页中为什么不显示图片
  15. 微信跑腿小程序怎么做
  16. 立即行动是打败烦躁和焦虑的最好办法
  17. windows下安装github for windows和SourceTree
  18. select属性标签
  19. 嵌入式开发:当用微控制器构建嵌入式GUI时,有哪些注意事项
  20. 动物判别系统python实现

热门文章

  1. Python变量赋值的秘密
  2. Jmeter - 服务器性能检测
  3. jQuery动态五星评分
  4. 确保帐户安全 谈MySQL数据库安全解决方案
  5. deprecated conversion from string constant to ‘char*’
  6. C#水晶报表,窗体不显示,闪退
  7. Eclipse的详细安装步骤
  8. 上一季诺基亚销售下跌28%
  9. 【Marva Collins' Way】第三章
  10. golang nil切片与空切片