Kafka实战 自定义分区器 几种常见的分区器

自定义分区器

kafka topic是可以分为很多很多分区的,每一条消息在Kafka中存储的时候是要选择其中一个分区进行存储的,并且只能存在于一个分区当中。

这条消息到底该存在哪个分区当中?这个是由分区器来决定的。

分区器在Kafka当中默认采用的是哈希分区器,也就是根据消息的hash值%分区的数量,这样就可以将分区号计算出来。当然也可以根据自己的需求去定义自己的分区器。

生产者

可以看到大写字母开头的,是第三个窗口的分区收到了,说明监听的是0分区。第一个HAHAHA是因为最开始只启动了第一个消费者,所以三个分区它都消费。

后来有两个消费者上线了之后,他们各司其职,各自去消费一个分区。下面分区器的逻辑就是,大写字母、小写字母、或者不属于前面两者的都分别存放于不同的分区当中。

几种常见的分区器

随机分区器。比如有多个分区,随机返回0 1 2就行了。第一件事情就是获取所有的分区数量,得知道一共有多少分区才行。

哈希分区器 可以根据值或者key的哈希值来选择分区

轮询分区器 发送一条消息放到0分区,下一条消息放在1分区,再下一条消息放在2分区。

分区器只需要自己去写一个类去实现接口即可,具体想要做什么样的分区逻辑,在partition中实现一下就行。

相关推荐
一条泥憨鱼1 天前
【消息队列】ACK确认了什么:消息队列可靠投递的完整链路
java·后端·kafka·消息队列·rabbitmq
斯普信专业组1 天前
Kafka 消费者 poll() 流程与原理详解
kafka·流程图
迅翼SwiftWing1 天前
编队系列(二)|固定翼如何依靠邻居信息保持队形?一致性控制、通信拓扑与分布式仿真实现,附仿真代码
分布式
ly76891 天前
幂等消费者与重试副作用:Kafka 端点接入时的去重边界
分布式·kafka·linq·apache camel·幂等消费者·重试副作用·去重边界
qq_452396231 天前
第三篇:《从 ZooKeeper 到 KRaft 的迁移实战:前置条件、三阶段流程与回滚策略》
分布式·zookeeper·云原生
真上帝的左手2 天前
30. 技术专题-‌应用框架组件-关系型数据库-MySQL-Mybatis
数据库·分布式·mysql·中间件·mybatis
程序猿乐锅2 天前
万字详解Single-flight(单飞模式)
java·开发语言·分布式·后端·学习·single-flight
sunny06602 天前
推理 INFRA 方法论(2):分布式推理:TP、DP、EP、CP 与 PP 的取舍
人工智能·分布式
字节探索2 天前
Redis 分布式锁:从 SETNX 误删到看门狗自动续期的原理与实践
redis·分布式
9624562 天前
容器 RUNNING,为什么中间件仍不可用?ActiveMQ 与 Kafka/ZooKeeper 恢复实录
中间件·kafka·activemq