Kafka Consumer底层原理分析【Kafka系列】

本文深入剖析Kafka Consumer的底层原理,对比低阶API和高阶API的特性和使用。低阶API需自行处理offset、broker连接等问题,适合定制化需求;高阶API内置负载均衡,简化使用,但扩展性有限。文章详细介绍了两者在负载均衡、offset管理和交互过程中的实现机制,并通过实验展示了高阶API的负载均衡效果。
摘要由CSDN通过智能技术生成

虽然目前Kafka0.10版本已经重写了其API,但底层原理是类似的,所以我们可以先了解kafka0.8.x里面的提供的Consumer的实现原理与交互流程

Kafka提供了两套API给Consumer

  • The SimpleConsumer API
  • The high-level Consumer API

1. 低阶API

本质上是提供了一种与broker交互信息的API

剩下的处理全靠用户自己的程序,功能比较简单,但用户扩展性比较强

1) API结构

低阶API的consumer,指定查找topic某个partition的指定offset去消费

首先与broker通信,寻找到leader(不与zookeeper通信,不存在groupid),然后直接和leader通信,指定offset去消费。消费多少,从哪里开始消费,都可控(我们的例子是从0开始消费)


findLeader方法中会去调用findPartitionMetadata方法


程序运行结果:

运行过程中一直卡住没有成功消费,加入如下错误信息判断,发现error code为1

说明我们从offset 0消费offsetoutofrange了

(我们发送请求topic1 partition0的offset 0  broker回复我们offset out of range,因为kafka中已经没有offset 0 的数据了,已经过期清理掉了)



所以我们添加getLastOffset,getEarliestOffset的方法,获取该topic该partition在kafka集群中有的的最小和最大的offset




调整offset之后,可能最新的数据也过期了,于是获取到的message的size为0


查看SimpleConsumer的源码:



评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值