kafka自定义分区实战
本文来说下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自定义分区实战相关推荐
- Kafka自定义分区规则
分区规则: public class Partitioner1 implements Partitioner{public Partitioner1() {}public int partition( ...
- Kafka分区分配策略(3)——自定义分区分配策略
接上文: 1.[Kafka分区分配策略(1)--RangeAssignor] 2.[Kafka分区分配策略(2)--RoundRobinAssignor和StickyAssignor] 欢迎支持笔者新 ...
- kafka模拟生产-消费者以及自定义分区
2019独角兽企业重金招聘Python工程师标准>>> 基本概念 kafka中的重要角色 broker:一台kafka服务器就是一个broker,一个集群可有多个broker,一 ...
- java kafka 设置分区_Java kafka如何实现自定义分区类和拦截器
Java kafka如何实现自定义分区类和拦截器 2.producer配置文件指定,具体的分区类 // 具体的分区类 props.put(ProducerConfig.PARTITIONER_CLAS ...
- java kafka 分区_Java kafka如何实现自定义分区类和拦截器
生产者发送到对应的分区有以下几种方式: (1)指定了patition,则直接使用:(可以查阅对应的java api, 有多种参数) (2)未指定patition但指定key,通过对key的value进 ...
- SpringBoot整合kafka之kafka分区实战
本文来说下SpringBoot整合kafka之kafka分区实战 文章目录 准备工作 程序代码 程序测试 本文小结 准备工作 当然我们也可以不手动创建topic,在执行代码kafkaTemplate. ...
- kafka内置分区及自定义分区
内置分区策略 1.如果指定的partition,那么直接进入该partition 2.如果没有指定partition,但是指定了key,使用key的hash选择partition 3.如果既没有指定p ...
- kafka自定义生产者分区器、自定义消费者分区器
目录 1 默认分区 1.1 键key的作用 1.2 键的分区 2 生产者自定义分区 2.1 使用场景分析 2.2 自定义分区器要实现Partitioner接口 2.3 生产者使用分区器 3 消费者自定 ...
- 21,spark sql 测试 : 1.4G 文件实战,测试耗时多少,先分区,再在分区内计算,用列内容分区( 这是一个很魔幻的问题 ),自定义分区
一 ,常规问题 : 1 ,表关联,数据过滤 : sql select stock.area,goods.smallLei,goods.typeColorId, weekofyear(to_date(s ...
最新文章
- HDU 2216(简单BFS)
- ASP.NET数据绑定技术
- Mysql忘记用户密码的解决办法
- Thymeleaf——访问静态资源(static)解决方案
- Vue入门到TodoList练手
- 通过扫码打开IOS的App Store下载APP(Android版暂时没找到解决方法)
- 揭密 GaussDB T 主备物理复制搭建过程(全)
- HDU2504 又见GCD
- redhat 替换centos yum源
- css3波浪js特效代码
- python之window下安装python2版的pyv8库 (window install python2 pyv8)
- SPI通信协议简要介绍
- STP生成树/BPDU保护小实验
- 网页中为什么不显示图片
- 微信跑腿小程序怎么做
- 立即行动是打败烦躁和焦虑的最好办法
- windows下安装github for windows和SourceTree
- select属性标签
- 嵌入式开发:当用微控制器构建嵌入式GUI时,有哪些注意事项
- 动物判别系统python实现