首页 > 其他分享 >整理好了!2024年最常见 20 道 Kafka面试题(八)

整理好了!2024年最常见 20 道 Kafka面试题(八)

时间:2024-06-06 21:04:05浏览次数:19  
标签:面试题 20 Broker Kafka MQ 消息 acks Leader

上一篇地址:整理好了!2024年最常见 20 道 Kafka面试题(七)-CSDN博客

十五、Kafka 与传统 MQ 消息系统之间有什么区别?

Kafka与传统的消息队列(MQ)系统有多个显著的区别,这些区别主要体现在以下几个方面:

  1. 数据模型

    • Kafka:Kafka是一个分布式流处理平台,它使用发布-订阅模式来处理数据流。它将数据以流的形式存储在主题(Topics)中,主题可以被视为消息队列。
    • 传统MQ:传统消息队列系统通常使用点对点模型,消息被发送到队列中,然后被消费者从队列中取出。这种方式更侧重于一对一或一对多的消息传递。
  2. 持久化

    • Kafka:Kafka将消息持久化存储在磁盘上,支持高吞吐量的读写操作,并且可以配置消息的保留策略。
    • 传统MQ:传统MQ也支持消息的持久化,但通常更侧重于内存中的消息处理,以提高响应速度。
  3. 可扩展性

    • Kafka:Kafka设计为易于扩展,可以通过简单地增加更多的Broker节点来水平扩展。
    • 传统MQ:传统MQ系统可能在扩展性上不如Kafka灵活,扩展通常涉及到更复杂的配置和资源管理。
  4. 吞吐量和性能

    • Kafka:Kafka设计用于高吞吐量的消息处理,特别是在大数据场景下,它能够处理每秒数百万条消息。
    • 传统MQ:传统MQ系统在处理高吞吐量消息时可能不如Kafka高效,尤其是在分布式环境中。
  5. 容错性和可靠性

    • Kafka:Kafka提供了高容错性,通过副本(Replicas)和分区(Partitions)来确保消息的可靠性。
    • 传统MQ:传统MQ系统可能提供不同的容错机制,例如事务队列和持久化消息,但可能不如Kafka的副本和分区机制强大。
  6. 消息传递语义

    • Kafka:Kafka支持最多一次(At Most Once)、最少一次(At Least Once)和精确一次(Exactly Once)的传递语义。
    • 传统MQ:传统MQ系统可能支持不同的消息传递保证,例如事务性消息传递,但可能不支持精确一次语义。
  7. 消费者模型

    • Kafka:Kafka支持消费者组(Consumer Groups),允许多个消费者实例并行地消费消息,并且可以自动平衡负载。
    • 传统MQ:传统MQ通常支持点对点的消息传递,消费者之间没有自动负载平衡。
  8. 集成和生态系统

    • Kafka:Kafka是Apache软件基金会的项目,拥有庞大的生态系统和社区支持,与许多大数据工具和平台(如Spark、Flink、Hadoop等)紧密集成。
    • 传统MQ:传统MQ系统可能拥有自己的一套工具和集成方式,但可能不如Kafka的生态系统广泛。
  9. 监控和管理

    • Kafka:Kafka提供了JMX(Java Management Extensions)和其他工具来监控和管理集群。
    • 传统MQ:传统MQ系统可能有自己的管理界面和监控工具。
  10. 成本和维护

    • Kafka:作为一个开源解决方案,Kafka可以降低成本,但可能需要更多的专业知识来维护和优化。
    • 传统MQ:商业MQ解决方案可能需要购买许可证,但通常提供专业的支持和服务。

综上所述,Kafka与传统MQ系统在设计理念、性能、可扩展性、容错性、消费者模型和生态系统等方面都有显著的区别。这些区别使得Kafka在处理大规模数据流和实时数据处理方面具有独特的优势。

十六、Kafka 的 ack 机制有哪几种,它们是如何工作的?

Kafka的ack(Acknowledgement,确认机制)是消息确认机制,用于确保生产者发送的消息被Kafka集群正确处理。Kafka提供了三种不同的ack级别,它们决定了生产者在发送消息后等待Broker确认的方式:

  1. acks=0:无确认(No Acknowledgment)

    • 在这种模式下,生产者不会等待来自Broker的任何确认就认为消息已经发送成功。
    • 这种设置可以提供最高的吞吐量,因为生产者发送消息后立即继续发送下一条消息,而不需要等待网络延迟。
    • 但是,如果Broker在接收到消息之前发生故障,那么消息可能会丢失。
  2. acks=1:单节点确认(Leader Acknowledgment)

    • 当设置为acks=1时,生产者在发送消息后会等待来自Leader Broker(即负责消息所属分区的主节点)的确认。
    • 这意味着只要Leader Broker接收到消息,生产者就会认为消息发送成功。
    • 这种模式下的消息丢失风险较低,因为Leader Broker已经确保消息被写入,但在Leader Broker写入消息到磁盘后但在发送确认之前如果发生故障,消息可能会丢失。
  3. acks=all(或acks=-1):所有副本确认(All Replicas Acknowledgment)

    • 这是最强的确认级别,生产者会等待所有同步副本(ISR,In-Sync Replicas)都确认接收到消息后才认为消息发送成功。
    • ISR是指那些与Leader保持同步的副本,它们会将消息写入自己的日志中,并确认给Leader。
    • 这种模式下,即使Leader Broker发生故障,由于已经有副本同步了消息,所以消息不会丢失,从而提供了最高的数据耐久性。
    • 然而,这种模式会降低吞吐量,因为生产者需要等待所有副本的确认,这增加了延迟。
  4. acks=leader(Kafka 2.8.0之后引入):

    • 当设置为acks=leader时,生产者将等待Leader Broker的确认,但不关心ISR中的其他副本。
    • 这个设置在某些场景下可以提供比acks=1更高的吞吐量,因为生产者不需要等待所有副本的确认,但仍然保证了消息不会因为Leader的故障而丢失。

每种ack级别都有其适用场景,用户需要根据自己的需求在数据的可靠性和系统性能之间做出权衡。例如,如果对数据的可靠性要求非常高,可以选择acks=all;如果对吞吐量有更高的要求,可以选择acks=0或acks=1。在Kafka 2.8.0之后,还可以选择acks=leader作为折衷方案。

标签:面试题,20,Broker,Kafka,MQ,消息,acks,Leader
From: https://blog.csdn.net/weixin_38616368/article/details/139461228

相关文章

  • 整理好了!2024年最常见 20 道 Kafka面试题(七)
    上一篇地址:整理好了!2024年最常见20道Kafka面试题(六)-CSDN博客十三、Kafka中数据传输的事务定义有哪几种?Kafka中数据传输的事务定义有三种:最多一次:在这种模式下,消息最多只会被传输一次,但也存在消息不被传输的可能性。这种情况通常发生在网络不稳定或系统崩溃等异常情况下......
  • 整理好了!2024年最常见 20 道 Kafka面试题(六)
    上一篇地址:整理好了!2024年最常见20道Kafka面试题(五)-CSDN博客十一、Kafka中的ISR(In-SyncReplicas)是什么?在ApacheKafka中,ISR是"In-SyncReplicas"的缩写,它代表与领导者(Leader)保持同步的追随者(Follower)集合。ISR是Kafka保证数据一致性和高可用性的关键概念之一。以......
  • 整理好了!2024年最常见 20 道 Kafka面试题(五)
    上一篇地址:整理好了!2024年最常见20道Kafka面试题(四)-CSDN博客九、Kafka是如何维护消费状态跟踪的?ApacheKafka是一个分布式流处理平台,它能够高效率地处理和存储大量的数据流。在Kafka中,消费状态跟踪是确保消息被正确处理且不被重复处理的关键机制。以下是Kafka维护消......
  • Kafka源码分析(六)——Producer:Sender线程——Batch筛选
    作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬学习必须往深处挖,挖的越深,基础越扎实!阶段1、深入多线程阶段2、深入多线程设计模式阶段3、深入juc源码解析阶段4、深入jdk其余源码解析......
  • Kafka源码分析(七)——Producer:Sender线程——Broker连接检查
    作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬学习必须往深处挖,挖的越深,基础越扎实!阶段1、深入多线程阶段2、深入多线程设计模式阶段3、深入juc源码解析阶段4、深入jdk其余源码解析......
  • 【2024最新】Python 学习路线分享
    学习资料已打包,需要的小伙伴可以戳这里学习资料整理了一份Python学习路线。内容依然是从入门到进阶,既有教程,也有经典书籍推荐,还有实战开源项目。Python的发展方向还是挺多的,比如服务端开发,爬虫,数据分析,机器学习等,本文推荐的内容全部是服务端开发,Web开发方向。主......
  • 入手戴尔R720服务器(1)通过iDRAC查看系统信息
    想入手服务器很久了,一直担心功耗太高,今天狠心搞了一台戴尔服务器R720。需求开虚拟机,核心数要多学习以下Windows云桌面AD域控officeonlineserverubuntu试验机随便折腾不怕玩坏最好两个网口以上稳定四个以上硬盘位‍为什么是R720?1000元预算......
  • 2024墨者杯哈希sha1绕过
    题目描述:某开发者发现这个页面好像不能正常访问<?phperror_reporting(0);if($_SERVER['REQUEST_METHOD']!=='POST'){header("HTTP/1.1405MethodNotAllowed");exit();}else{if(!isset($_POST['roam1'])||!isset($_PO......
  • 2024最新华为OD算法题目
    在一个机房中,服务器的位置标识在 n*m 的整数矩阵网格中,1表示单元格上有服务器,0 表示没有。如果两台服务器位于同一行或者同一列中紧邻的位置,则认为它们之间可以组成一个局域网。请你统计机房中最大的局域网包含的服务器个数。输入描述第一行输入两个正整数,n和m,0<n,m<=......
  • 入手戴尔R720服务器(1)通过iDRAC查看系统信息
    想入手服务器很久了,一直担心功耗太高,今天狠心搞了一台戴尔服务器R720。需求开虚拟机,核心数要多学习以下Windows云桌面AD域控officeonlineserverubuntu试验机随便折腾不怕玩坏最好两个网口以上稳定四个以上硬盘位‍为什么是R720?1000元预算......