【Kafka面试演练】那Kafka消费者手动提交、自动提交有什么区别?

简介: 嗯嗯Ok。分区的作用主要就是为了提高Kafka处理消息吞吐量。每一个topic会被分为多个分区。假如同一个topic下有n个分区、n个消费者,这样的话每个分区就会发送消息给对应的一个消费者,这样n个消费者负载均衡地处理消息。同时生产者会发送消息给不同分区,每个分区分给不同的brocker处理,让集群平坦压力,这样大大提高了Kafka的吞吐量。面试官思考中…

在这里插入图片描述

面试官:听说你精通Kafka,那我就考考你吧


面试官:不用慌尽管说,错了也没关系😊。。。


每日分享【大厂面试演练】,本期是《Kafka系列》,感兴趣就关注我吧❤️

面试官:你先说说Kafka由什么模块组成吧

嗯嗯好的。

主要有:生产者、消费者、Brocker、Topic、消息分区Partition


面试官思考中…


面试官:那我们先讲讲生产者、消费者?

嗯嗯好的。


面试官思考中…


面试官:消息生产者的异步回调,知道吧

Ok知道的。主要是可以进行异常日志的记录

是这样的,Kafka的异步提交消息相比同步提交,不需要在brocker响应前阻塞线程。

但是异步提交我们是不知道消费情况的,所以就可以在Kafka消费异常时,通过其回调来告知程序异常情况,从而进行日志记录。


面试官思考中…


面试官:消费者分区,可以介绍下吗

嗯嗯Ok。分区的作用主要就是为了提高Kafka处理消息吞吐量

每一个topic会被分为多个分区

假如同一个topic下有n个分区、n个消费者,每个分区会发送消息给对应的一个消费者,这样n个消费者就可以负载均衡地处理消息。

同时生产者会发送消息给不同分区,每个分区分给不同的brocker处理,让集群平坦压力,这样大大提高了Kafka的吞吐量。

在这里插入图片描述


面试官思考中…


面试官:你说说消费者手动提交和自动提交,有什么区别

其实就是两种不同的客户端提交方式。

  1. 自动提交的话,通过设置enable.auto.commit为true,每过5秒消费者客户端就会自动提交最大偏移量
  2. 手动提交的话,通过设置enable.auto.commit为false,让消费者客户端消费程序执行后提交当前的偏移量


面试官思考中…


面试官:那它们都有什么优、缺点吗

  1. 自动提交的话,比较方便只需要配置就可以,不过可能会导致消息丢失或重复消费。
    • 如果刚好到了5秒时提交了最大偏移量,此时正在消费中的消费者客户端崩溃了,就会导致消息丢失
    • 如果成功消费了,下一秒应该自动提交,但此时消费者客户端奔溃了提交不了,就会导致其他分区的消费者重复消费
  2. 手动提交的话,需要写程序手动提交,要分两种提交方式。
    • 手动提交是同步提交的话,在broker对请求做出回应之前,客户端会一直阻塞,这样的话限制应用程序的吞吐量
    • 异步提交的话,不会有吞吐量的问题。不过发送给broker偏移量之后,不会管broker有没有收到消息

在这里插入图片描述

面试官抓抓脑袋,继续看你的简历......


得想想考点你不懂的😰

未完待续。。。。。。

好了,今天的分享就先到这,我们下期【大厂面试演练】继续。

创作不易,不妨点赞、收藏、关注支持一下,各位的支持就是我创作的最大动力❤️

相关文章
|
6天前
|
消息中间件 Java Kafka
关于kafka消费者超时配置
关于kafka消费者超时配置
|
9天前
|
存储 安全 Java
java面试基础 -- ArrayList 和 LinkedList有什么区别, ArrayList和Vector呢?
java面试基础 -- ArrayList 和 LinkedList有什么区别, ArrayList和Vector呢?
17 0
|
10天前
|
消息中间件 监控 Java
腾讯面试:如何提升Kafka吞吐量?
Kafka 是一个分布式流处理平台和消息系统,用于构建实时数据管道和流应用。它最初由 LinkedIn 开发,后来成为 Apache 软件基金会的顶级项目。 Kafka 特点是**高吞吐量、分布式架构、支持持久化、集群水平扩展和消费组消息消费**,具体来说: 1. **高吞吐量**:Kafka 具有高性能和低延迟的特性,能够处理大规模数据,并支持每秒数百万条消息的高吞吐量。 2. **分布式架构**:Kafka 采用分布式架构,可以水平扩展,多个节点之间能够实现负载均衡和高可用性。 3. **可持久化**:Kafka 将消息持久化到磁盘中,保证消息的可靠性,即使消费者下线或出现故障,消
21 0
|
16天前
|
消息中间件 关系型数据库 MySQL
MySQL 到 Kafka 实时数据同步实操分享(1),字节面试官职级
MySQL 到 Kafka 实时数据同步实操分享(1),字节面试官职级
|
16天前
|
索引
【ES6新语法】let、const、var的区别,你学会了面试官没话说
【ES6新语法】let、const、var的区别,你学会了面试官没话说
|
16天前
|
前端开发
vue2与vue3双向数据绑定的区别,前端面试自我介绍
vue2与vue3双向数据绑定的区别,前端面试自我介绍
|
16天前
|
开发工具 Python
Python中return和yield的区别,面试官不讲武德
Python中return和yield的区别,面试官不讲武德
|
16天前
|
消息中间件 Java Kafka
Java大文件排序(有手就能学会),kafka面试题2024
Java大文件排序(有手就能学会),kafka面试题2024
|
17天前
|
消息中间件 前端开发 Java
java面试刷题软件kafka和mq的区别面试
java面试刷题软件kafka和mq的区别面试
|
16天前
|
消息中间件 关系型数据库 Kafka
实时计算 Flink版产品使用合集之想要加快消费 Kafka 数据的速度,该怎么配置参数
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。

热门文章

最新文章