Kafka分区与group
来源:互联网 发布:spss软件的作用 编辑:程序博客网 时间:2024/05/18 14:27
Kafka 分区与group
1.原理图
2.原理描述
一个topic 可以配置几个partition,produce发送的消息分发到不同的partition中,consumer接受数据的时候是按照group来接受,kafka确保每个partition只能同一个group中的同一个consumer消费,如果想要重复消费,那么需要其他的组来消费。Zookeerper中保存这每个topic下的每个partition在每个group中消费的offset
新版kafka把这个offsert保存到了一个__consumer_offsert的topic下
这个__consumer_offsert 有50个分区,通过将group的id哈希值%50的值来确定要保存到那一个分区.
这样也是为了考虑到zookeeper不擅长大量读写的原因。
所以,如果要一个group用几个consumer来同时读取的话,需要多线程来读取,一个线程相当于一个consumer实例。当consumer的数量大于分区的数量的时候,有的consumer线程会读取不到数据。
假设一个topic test 被groupA消费了,现在启动另外一个新的groupB来消费test,默认test-groupB的offset不是0,而是没有新建立,除非当test有数据的时候,groupB会收到该数据,该条数据也是第一条数据,groupB的offset也是刚初始化的ofsert, 除非用显式的用–from-beginnging 来获取从0开始数据
3.查看topic-group的offsert
位置:zookeeper
路径:[zk: localhost:2181(CONNECTED) 3] ls /brokers/topics/__consumer_offsets/partitions
在zookeeper的topic中有一个特殊的topic __consumer_offserts
计算方法:
int hashCode = Math.abs("ttt".hashCode()); int partition = hashCode % 50;
先计算group的hashCode,再除以分区数(50),可以得到partition的值
使用命令查看:
kafka-simple-consumer-shell.sh --topic __consumer_offsets --partition 11 --broker-list localhost:9092,localhost:9093,localhost:9094 --formatter "kafka.coordinator.GroupMetadataManager\$OffsetsMessageFormatter"
11 是计算出来的分区
上图是打印出来的offsert信息,[group-id,topic,partition_id]
注意:kafka API consumer 消费数据的时候,会把offset保存在zookeeper中,所以下次可以接着消费,但是kafka-rest 不会。
4.参数
auto.offset.reset:默认值为largest,代表最新的消息,smallest代表从最早的消息开始读取,当consumer刚开始创建的时候没有offset这种情况,如果设置了largest,则为当收到最新的一条消息的时候开始记录offsert,若设置为smalert,那么会从头开始读partition
- Kafka分区与group
- kafka的分区数与多线程消费
- Kafka分区机制介绍与示例
- Kafka分区机制介绍与示例
- kafka的分区数与多线程消费
- kafka consumer group总结
- kafka如何删除group
- 探讨kafka的分区数与多线程消费
- 探讨kafka的分区数与多线程消费
- 探讨kafka的分区数与多线程消费
- 【转载】探讨kafka的分区数与多线程消费
- 【原创】探讨kafka的分区数与多线程消费
- KAFKA调整分区
- kafka创建分区
- kafka分区原理图
- Kafka分区介绍
- 自定义Kafka分区器
- kafka 自定义分区实例
- 【脚本语言系列】关于Python机器学习scikits-learn,你需要知道的事
- Python的虚拟环境virtualenv
- 解决ECShop transport.js与jQuery冲突
- 关于java线程的经典面试题。主线程子线程交替执行n次
- Brick Wall
- Kafka分区与group
- centos vi命令 常用操作
- hdu2844 多重背包+二进制优化
- springmvc 拦截器配置出错导致重复拦截多次,且不能访问项目
- Linux下用户组、文件权限详解
- hihocoder #1515 : 分数调查 并查集好题
- 欢迎使用CSDN-markdown编辑器
- jQuery的三种bind/One/Live/On事件绑定使用方法
- 图像处理之相似图片识别(直方图应用篇)