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

虽然目前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
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Kafka是一个分布式流处理平台,它的底层原理涉及到几个核心组件和概念。 1. 消息:Kafka是一个消息系统,它通过消息来进行数据的传输和存储。消息是一个字节数组,可以包含任意类型的数据。 2. Topic(主题):Topic是消息的逻辑容器,用于将消息进行分类和组织。一个Topic可以有多个分区。 3. 分区:Topic可以被分为多个分区,每个分区是一个有序的消息日志。分区中的每条消息都被分配了一个唯一的偏移量(offset)。 4. 生产者:生产者负责将消息发送到Kafka的Broker(即Kafka集群中的服务器)。生产者可以指定消息发送到特定的Topic和分区。 5. 消费者:消费者从Broker中拉取消息并进行处理。消费者可以订阅一个或多个Topic,并指定从哪个偏移量开始消费。 6. Broker:BrokerKafka集群中的服务器节点,负责存储和复制消息。一个Kafka集群可以由多个Broker组成。 7. ZooKeeperKafka使用ZooKeeper来进行集群的协调和管理,例如选举Leader和存储集群的元数据。 8. 日志存储:Kafka使用基于磁盘的文件存储消息日志,这样可以提供高吞吐量和持久性。 9. 消息复制:Kafka使用多个Broker来实现消息的冗余备份,确保数据的可靠性和高可用性。 10. 消息分发:Kafka使用分区机制将消息均匀地分布到不同的Broker上,以实现负载均衡和并行处理。 总的来说,Kafka通过分区、复制、日志存储和分布式架构等机制,提供了高吞吐量、低延迟、可靠性和可扩展性的流处理能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值