Kafka入门之consumer--rebalance流程

重平衡(rebalance)
旧版本Kafka依托于Zk进行rebalance,新版本consumer使用了Kafka内置的一个全新的组协调协议。对于每个组而言,Kafka的某个broker会被选举为组协调者(coordinator)。
触发条件:
1.组成员发生变更。
2.组订阅topic数发生变更。比如使用基于正则表达式的订阅,当匹配正则表达式的新topic被创建时则会触发rebalance
3.组订阅topic的分区数发生变更。比如使用命令行脚本增加了订阅topic的分区数。
分区策略:
range,round-robin,sticky策略
rebalance generation:
表示rebalance之后的一届成员,在consumer中它是一个整数,从0开始。主要是为了保护consumer group,特别是防止无效的offset提交,比如上一届的consumer成员由于某些原因延迟提交了offset,但rebalance之后该group产生了新一届group成员,而这次新延迟的offset提交携带的是旧generation信息,因此这次提交会被consumer group拒绝。
rebalance协议:
JoinGroup请求:consumer请求加入组
SyncGroup请求:group leader把分配方案同步到组内所有成员中
Heartbeat请求:consumer定期向coordinator汇报心跳表明自己依然存活
LeaveGroup请求:consumer主动通知coordinator该conumer即将离组。
DescribeGroup请求:供管理员使用,查看组的所有信息,包括成员信息,协议信息,分配方案以及订阅信息等
在成功rebalance之后,组内所有consumer都需要定期向coordinator发送Heartbeat请求,而每个consumer也是根据Heartbeat请求的响应中是否包含REBALANCE_IN_PROGRESS来判断当前group是否开启了新一轮rebalance
Kafka入门之consumer--rebalance流程的更多相关文章
- Kafka 0.8 Consumer Rebalance
1 Rebalance时机 0.10kafka的rebalance条件 条件1:有新的consumer加入 条件2:旧的consumer挂了 条件3:coordinator挂了,集群选举出新的coor ...
- Kafka入门之consumer
offset存放在_consumer_offsets这个topic下 并且从0-49划分了50个分区: consumer会在kafka集群的所有broker中选择一个broker作为consumer ...
- kafka系列之(3)——Coordinator与offset管理和Consumer Rebalance
from:http://www.jianshu.com/p/5aa8776868bb kafka系列之(3)——Coordinator与offset管理和Consumer Rebalance 时之结绳 ...
- Kafka 0.8 Consumer设计解析
摘要 本文主要介绍了Kafka High Level Consumer,Consumer Group,Consumer Rebalance,Low Level Consumer实现的语义,以及适用场景 ...
- Kafka设计解析(十三)Kafka消费组(consumer group)
转载自 huxihx,原文链接 Kafka消费组(consumer group) 一直以来都想写一点关于kafka consumer的东西,特别是关于新版consumer的中文资料很少.最近Kafka ...
- Kafka 0.8 Consumer处理逻辑
0.前言 客户端用法: kafka.javaapi.consumer.ConsumerConnector consumer = kafka.consumer.Consumer.createJavaCo ...
- kafka入门:简介、使用场景、设计原理、主要配置及集群搭建(转)
问题导读: 1.zookeeper在kafka的作用是什么? 2.kafka中几乎不允许对消息进行"随机读写"的原因是什么? 3.kafka集群consumer和producer状 ...
- 【Kafka入门】Kafka基础结构和知识
基本概念的总结 在基本的Kafka架构中,producer将消息发布到Kafka话题中,一个Kafka话题通常指消息的类别或者名称,Kafka话题被集群中一个充当Kafka server角色的 bro ...
- kafka 入门笔记 #1
kafka 入门笔记(#1) 单机测试 下载版本,解压 tar -xzf kafka_2.11-0.10.1.1.tgz cd kafka_2.11-0.10.1.1 启动服务 Kafka用到了Zoo ...
- Kafka入门介绍
1. Kafka入门介绍 1.1 Apache Kafka是一个分布式的流平台.这到底意味着什么? 我们认为,一个流平台具有三个关键能力: ① 发布和订阅消息.在这方面,它类似一个消息队列或企业消息系 ...
随机推荐
- 小白:String函数总结
string.h函数: 1.strlen 数出字符串存在多少字符: 2.strcmp 比较两个字符串,若相等返回0不相等返回1 3.strcpy(char *restrict dst,const ch ...
- NB-IoT DTU是什么 NB-IoT的优势有哪些
NB-IoT DTU是什么 NB-IoT DTU是一种采用NB-IoT技术实现数据远距离无线传输功能的终端设备,采用工业级的硬件设施和工业级的32位高性能通信处理器,工业级的无线数据传输模块,可以自动 ...
- Flask中的MTV架构之Templates
Flask 中的MTV架构之Templates 关注公众号"轻松学编程"了解更多. 1.Templates(模板引擎) 1.1 说明 模板文件就是按照特定规则书写的一个负责展示 ...
- C++代码雨
闲逛的时候发现了一个很好玩的程序 摘自:https://blog.csdn.net/u012837895/article/details/20849967#comments 效果如下 #include ...
- cenos7 u disk install
分类: 其他 2014-08-24 13:53 3406人阅读 评论(0) 收藏 举报 CentOS安装教程操作系统 ...
- Java的类加载器有几种?什么是双亲委派机制?
一.JAVA类加载器包括几种? 启动类加载器 bootstrap class loader 启动类加载器主要加载的是JVM自身需要的类,这个类加载是用C++语言实现的,是虚拟机自身的一部分,它负责将 ...
- 《Web接口开发与自动化测试》学习笔记(三)
一.认证系统 使用django本身自带的认证系统 1.登录admin后台 1. 先建立一个管理员用户: > python manage.py creatsuperuser 输入用户名.邮箱和密码 ...
- VUE自定义(有限)库存日历插件
开发过程中遇到一个令人发指的,一个element-ui无法满足的日历需求, 改造其日历插件的代价太大,于是索性自己手写一个,需求如下: 1. 根据开始.结束时间计算时间覆盖的月份,渲染有限的可选择日期 ...
- mybatis 字符串比较 == 用法
private String deptLevel; <when test='deptLevel=="3"'> 正确 <when test="deptLe ...
- 分布式文档存储数据库之MongoDB备份与恢复
前文我们聊了下mongodb的访问控制以及用户创建和角色分配,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13974656.html:今天我们来了解下mong ...