首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Kafka技术内幕之Consumer Fetcher

本篇我们将介绍Kafka Comsumer Fetcher,与前面我们在介绍Kafka Producer的Sender一样,消费者客户端也有一个拉取线程,从服务器端拉取客户端的请求数据。

Fetcher

根据offset从服务器端获取数据,发送FetchRequest请求获取指定的消息集合,处理FetchResponse,更新消息位置

client:ConsumerNetworkClient,消费者网络通信,发送请求

fetchSize:每次fecth的最大字节数

maxPollRecords:每次获取最大的record数量

metadata:kafka集群元数据

nextInLineRecords:PartitionRecords类型,内部定义了TopicPatition,ComplatedFetch,RecordBatch迭代器

completedFetches:已完成的拉取数据,CompletedFetch类型,内部存储了TopicPartition,fetchOffset,partitionData

// 存储在completedFetches队列中的消息数据还未解析的FetchResponse.PartitionData对象。将CompletedFetch中的消息数据进行解析,得到Record集合并返回;同时还会修改对应TopicPartitionState的position

// sendFetches方法主要是将FetchRequest添加到ConsumerNetworkClient的unsent列表里,等待被发送,并注册FetchResponse处理函数。FetchResponse的处理只要是解析FetchResponse后按照TopicPartition分类,将获取到的消息数据和offset组装成CompletedFetch并添加到CompletedFetches队里。

// 为我们assign的所有分区的对应的节点创建拉取请求,按照node 进行分类,把发往同一节点的所有TopicPartition和PartitionData封装成FetchRequestData

本篇我们分析了Kafka Comsumer 的Fetcher,下一篇我们将介绍Kafka应用篇。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181024G1CAEY00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券