《Kafka成神之路》- 三图搞懂分区、组消费模式

JavaEdge

共 1128字,需浏览 3分钟

 ·

2020-12-05 21:58


  点击上方“JavaEdge”,关注公众号

设为“星标”,好文章不错过!

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,比如想实现消息投递的其他语义

  • 自己处理各种错误,根据自己业务的需求

往期推荐


大厂如何解决数值精度/舍入/溢出问题

大厂数据库事务实践-事务生效就能保证正确回滚?

线上问题事迹(一)数据库事务居然都没生效?

硬核干货:HTTP超时、重复请求必见坑点及解决方案

给大忙人们看的Java NIO教程之Channel





目前交流群已有 800+人,旨在促进技术交流,可关注公众号添加笔者微信邀请进群


喜欢文章,点个“在看、点赞、分享”素质三连支持一下~

浏览 16
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报