首页  

Kafka中的分区分配     所属分类 kafka 浏览量 1122
发送端 消费端 broker 


发送端分区分配 分区器(Partitioner) 如果ProducerRecord中指定了partition字段,那就不需要分区器 默认分区器 org.apache.kafka.clients.producer.internals.DefaultPartitioner The default partitioning strategy: If a partition is specified in the record, use it If no partition is specified but a key is present choose a partition based on a hash of the key If no partition or key is present choose a partition in a round-robin fashion partition 指定了直接使用 key 不为null hash策略 Murmur2Hash key 为null 轮询策略
broker bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic my-topic --partitions 2 --replication-factor 1 创建 topic , 分区副本分配方案 如果使用 replica-assignment参数,按照指定的方案进行分区副本的创建 未指定机架信息和指定机架信息策略 未指定机架信息策略 没有配置broker.rack参数,或者使用disable-rack-aware参数来创建主题 , 副本因子不能大于 Broker 个数 第一个分区(编号为0)的第一个副本(编号为0)放置位置是从 brokerList 随机选取 其他分区的第一个副本放置位置相对于第0个分区依次往后移 kafka.admin.AdminUtils.assignReplicasToBrokers
消费端 每一个分区只能被同一个消费组中的一个消费者消费 三种策略 RangeAssignor RoundRobinAssignor StickyAssignor 默认 RangeAssignor 对于每个主题,以数字顺序排列可用分区,以字典顺序排列消费者。 将分区数量除以消费者总数, 整除则平均分配 ,否则排在前面的消费者分配一个额外的分区 StickyAssignor 尽量保证均衡 尽量保证当前未宕机的consumer所消费的分区不会被分配给其他的consumer

上一篇     下一篇
Kafka 和 RocketMQ 底层存储简单比较

kafka发送端核心参数说明

kafka消息发送机制

linux OOM Killer 如何破

Kafka幂等和事务

kafka面试题及答案