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

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

[[355699]]

 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」,可以通过以下二维码关注。转载本文请联系 JavaEdge公众号。

 

责任编辑:武晓燕 来源: JavaEdge
相关推荐

2024-07-05 11:01:13

2022-03-07 10:15:28

KafkaZookeeper存储

2021-12-01 09:23:13

C# 模式套路

2011-04-11 16:10:55

无向图C++

2020-01-17 09:48:42

码农自动化运维

2020-11-13 10:58:24

Kafka

2021-07-12 10:25:03

RocketMQ数据结构kafka

2012-03-05 15:37:37

Windows 8MSE

2020-03-18 14:00:47

MySQL分区数据库

2022-01-06 07:18:18

Kafka选举Leader

2014-01-03 14:05:26

手游用户体验设计启动和停止

2017-05-05 10:31:35

JavaScriptprototype__proto__

2024-02-19 13:11:38

门面模式系统

2024-02-26 11:52:38

代理模式设计

2024-01-29 12:22:07

设计模式策略模式

2020-09-30 14:07:05

Kafka心跳机制API

2023-06-01 08:08:38

kafka消费者分区策略

2021-12-28 12:01:59

Kafka 消费者机制

2013-04-19 15:12:17

架构师WEB架构师

2015-10-30 15:30:54

LevelDBSSTableSybase
点赞
收藏

51CTO技术栈公众号