Kafka分区、组消费模式源码解析

举报
JavaEdge 发表于 2021/06/04 00:48:02 2021/06/04
【摘要】 1 分区消费模式 直接由客户端(任一语言编写)使用Kafka提供的协议向服务器发送RPC请求获取数据,服务器接受到客户端的RPC请求后,将数据构造成RPC响应,返回给客户端,客户端解析相应的RPC响应获取数据。 Kafka支持的协议众多,使用比较重要的有: 获取消息的FetchRequest和FetchResponse获取offset的OffsetRequest和...

1 分区消费模式

直接由客户端(任一语言编写)使用Kafka提供的协议向服务器发送RPC请求获取数据,服务器接受到客户端的RPC请求后,将数据构造成RPC响应,返回给客户端,客户端解析相应的RPC响应获取数据。

Kafka支持的协议众多,使用比较重要的有:

  • 获取消息的FetchRequest和FetchResponse
  • 获取offset的OffsetRequest和OffsetResponse
  • 提交offset的OffsetCommitRequest和OffsetCommitResponse
  • 获取Metadata的Metadata Request 和 Metadata Response
  • 生产消息的 ProducerRequest 和 ProducerResponse

1.1 分区消费模式服务器端源码过程

2 组消费者模式

2.1 流程

3 总结

3.1 分区消费模式特点

  • 指定消费topic、partition和offset通过向服务 器发送RPC请求进行消费
  • 需要自己提交offset
  • 需要自己处理各种错误,如:leader切换错误
  • 需自行处理消费者负载均衡策略

3.2 组消费模式特点

  • 最终也是通过向服务器发送RPC请求完成的(和分区消费模式一样)
  • 组消费模式由Kafka服务器端处理各种错误,然后将消息放入队列再封装为迭代器(队列为FetchedDataChunk对象),客户端只需在迭代器上迭代取出消息
  • 由Kafka服务器端周期性的通过scheduler提交当前消费的offset,无需客户端负责
  • Kafka服务器端处理消费者负载均衡
  • 监控工具Kafka Offset Monitor和Kafka Manager均是基于组消费模式

所以,尽可能使用组消费模式,除非需要

  • 自己管理offset,比如想实现消息投递的其他语义
  • 自己处理各种错误,根据自己业务的需求

文章来源: javaedge.blog.csdn.net,作者:JavaEdge.,版权归原作者所有,如需转载,请联系作者。

原文链接:javaedge.blog.csdn.net/article/details/110478407

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。