【Java面试丨消息中间件】Kafka

这篇具有很好参考价值的文章主要介绍了【Java面试丨消息中间件】Kafka。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、kafka是如何保证消息不丢失

1. 介绍

  • 使用kafka在消息的收发过程都有可能会出现消息丢失
    (1)生产者发送消息到broker丢失
    (2)消息在broker中存储丢失
    (3)消费者从broker接收消息丢失
    【Java面试丨消息中间件】Kafka,Java面试,java,面试,kafka

2. 生产者发送消息到broker丢失

  • 设置异步发送:同步发送会发生阻塞,一般使用异步发送方式发送消息
    【Java面试丨消息中间件】Kafka,Java面试,java,面试,kafka
  • 消息重试:由于网络抖动,造成消息发送失败,可以使用kafka提供的重试机制
    【Java面试丨消息中间件】Kafka,Java面试,java,面试,kafka

3. 消息在broker中存储丢失

  • broker存储大体流程
    (1)生产者发送消息到达broker中
    (2)消息存储在分区中,分区分为两个不同角色,leader只有一个,follower可能会有多个
    (3)先把消息保存到leader分区中,然后由leader将消息同步到follower中
    【Java面试丨消息中间件】Kafka,Java面试,java,面试,kafka
  • 发送确认机制acks
    (1)要想保证数据不丢失,可以设置acks=all,在所有分区副本保存完成后,才会发送确认给生产者,性能也是最低的
    (2)实际生产环境中,最低也要设置acks=1
    【Java面试丨消息中间件】Kafka,Java面试,java,面试,kafka

4. 消费者从broker接收消息丢失

  • 一个kafka集群是由多个broker(kafka实例)组成的
  • 每一个broker中都存在不同的topic,并且一个topic可能存在多个分区,这些分区可能存在不同的broker中
  • 一个消费者组可能存在多个消费者,它们都是消费同一个topic,负责消费topic不同分区
  • topic分区中消息只能由消费者组中唯一一个消费者处理,不同的分区分配给不同的消费者
    【Java面试丨消息中间件】Kafka,Java面试,java,面试,kafka
  • 丢失消息原因
    (1)消费者默认是自动按期提交已经消费的偏移量,默认是每隔5秒提交一次。如果消费者组出现重平衡的情况,可能会重复消费或者丢失消息
    (2)可以禁用自动提交偏移量,改为手动
    【Java面试丨消息中间件】Kafka,Java面试,java,面试,kafka
  • 解决方案
    (1)同步提交【会阻塞,不推荐】
    (2)异步提交【偏移量可能不准确,不推荐】
    (3)同步+异步组合提交【推荐】
    【Java面试丨消息中间件】Kafka,Java面试,java,面试,kafka

5. 总结

【Java面试丨消息中间件】Kafka,Java面试,java,面试,kafka

6. 参考答案

【Java面试丨消息中间件】Kafka,Java面试,java,面试,kafka

二、kafka是如何保证消息的顺序性

1. 介绍

  • 问题原因
    (1)一个topic中的数据可能存储在不同的分区中,每个分区都有一个按照顺序的存储偏移量,如果消费者关联了多个分区,则不能保证消费的顺序性
  • 解决方案
    (1)发送消息时,指定分区号,往同一个分区中存储消息
    (2)发送消息时,按照相同的业务设置相同的key
    【Java面试丨消息中间件】Kafka,Java面试,java,面试,kafka

2. 案例分析

  • springboot集成kafkatemplate
    【Java面试丨消息中间件】Kafka,Java面试,java,面试,kafka

3. 参考答案

【Java面试丨消息中间件】Kafka,Java面试,java,面试,kafka

三、kafka的高可用机制要了解过吗

1. 介绍

  • 集群模式
  • 分区备份机制

2. 集群模式

【Java面试丨消息中间件】Kafka,Java面试,java,面试,kafka

3. 分区备份机制

【Java面试丨消息中间件】Kafka,Java面试,java,面试,kafka
【Java面试丨消息中间件】Kafka,Java面试,java,面试,kafka

4. 总结

【Java面试丨消息中间件】Kafka,Java面试,java,面试,kafka

5. 参考答案

【Java面试丨消息中间件】Kafka,Java面试,java,面试,kafka

四、kafka数据清理机制有了解过吗

1. 介绍

  • kafka文件存储机制
  • 数据清理机制

2. kafka文件存储机制

【Java面试丨消息中间件】Kafka,Java面试,java,面试,kafka

3. 数据清理机制

【Java面试丨消息中间件】Kafka,Java面试,java,面试,kafka

4. 总结

【Java面试丨消息中间件】Kafka,Java面试,java,面试,kafka

5. 参考答案

【Java面试丨消息中间件】Kafka,Java面试,java,面试,kafka

五、kafka中实现高性能的设计有了解过吗

1. 介绍

【Java面试丨消息中间件】Kafka,Java面试,java,面试,kafka

2. 参考答案

【Java面试丨消息中间件】Kafka,Java面试,java,面试,kafka文章来源地址https://www.toymoban.com/news/detail-677840.html

到了这里,关于【Java面试丨消息中间件】Kafka的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 消息中间件之Kafka(一)

    高性能的消息中间件,在大数据的业务场景下性能比较好,kafka本身不维护消息位点,而是交由Consumer来维护,消息可以重复消费,并且内部使用了零拷贝技术,性能比较好 Broker持久化消息时采用了MMAP的技术,Consumer拉取消息时使用的sendfile技术 Kafka是最初由Linkedin公司开发,

    2024年01月20日
    浏览(51)
  • 消息中间件之Kafka(二)

    1.1 为什么要对topic下数据进行分区存储? 1.commit log文件会受到所在机器的文件系统大小的限制,分区之后可以将不同的分区放在不同的机器上, 相当于对数据做了分布式存储,理论上一个topic可以处理任意数量的数据 2.提高并行度 1.2 如何在多个partition中保证顺序消费? 方案一

    2024年01月21日
    浏览(48)
  • 消息中间件,RabbitMQ,kafka常见面试题

    RabbitMQ和Kafka都是消息队列系统,可以用于流处理。流处理是指对高速、连续、增量的数据进行实时处理。 RabbitMQ 和 Kafka 的相同点有以下几个: 都是消息队列系统,可以用于流处理、异步通信、解耦等场景 都是开源的,有活跃的社区和丰富的文档 都支持分布式部署,具有高

    2024年02月04日
    浏览(39)
  • 架构师系列- 消息中间件(13)-kafka深入应用

    1)配置文件  2)启动信息 4.2.1 发送类型 KafkaTemplate调用send时默认采用异步发送,如果需要同步获取发送结果,调用get方法 详细代码参考:AsyncProducer.java 消费者使用:KafkaConsumer.java 1)同步发送 通过swagger发送,控制台可以正常打印send result swagger访问地址:http://localhost:808

    2024年04月29日
    浏览(39)
  • 【消息中间件MQ系列】Spring整合kafka并设置多套kafka配置

            圣诞节的到来,程序员不会收到圣诞老人的🎁,但可以自己满足一下自己,所以,趁着有时间,就记录一下这会儿撸了些什么代码吧!!!         因为业务原因,需要在系统内新增其他的kakfa配置使用,所以今天研究的是怎么在系统内整合多套kafka配置使用。

    2024年02月01日
    浏览(95)
  • 【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka

    作者简介 前言 博主之前写过一个完整的MQ系列,包含RabbitMQ、RocketMQ、Kafka,从安装使用到底层机制、原理。专栏地址: https://blog.csdn.net/joker_zjn/category_12142400.html?spm=1001.2014.3001.5482 本文是该系列的清单综述,会拉通来聊一下三大MQ的特点和各种适合的场景。 目录 1.概述 1.1.M

    2024年02月09日
    浏览(52)
  • ActiveMQ、RabbitMQ、Kafka、RocketMQ消息中间件技术选型

    消息中间件是分布式系统中重要的组件之一,用于实现异步通信、解耦系统、提高系统可靠性和扩展性。在做消息中间件技术选型时,需要考虑多个因素,包括可靠性、性能、可扩展性、功能丰富性、社区支持和成本等。本文将五种流行的消息中间件技术:ActiveMQ、RabbitMQ、

    2024年02月11日
    浏览(49)
  • SpringBoot整合消息中间件(ActiveMQ,RabbitMQ,RocketMQ,Kafka)

    消息的发送方:生产者 消息的接收方:消费者 同步消息:发送方发送消息到接收方,接收方有所回应后才能够进行下一次的消息发送 异步消息:不需要接收方回应就可以进行下一步的发送 什么是消息队列? 当此时有很多个用户同时访问服务器,需要服务器进行操作,但此

    2024年04月27日
    浏览(51)
  • 消息中间件学习笔记--RabbitMQ(二、模式,一次违反常规的Java大厂面试经历

    .Fanout:转发消息到所有绑定队列 比较常用的是Direct、Topic、Fanout. Fanout 这种Fanout模式不处理路由键,只·需要简单的将队列绑定到exchange上,一个发送到exchange的消息都会被转发到与该exchange绑定的所有队列上。很像广播子网,每台子网内的主机都获得了一份复制的消息。Fan

    2024年04月09日
    浏览(99)
  • 消息中间件(MQ)对比:RabbitMQ、Kafka、ActiveMQ 和 RocketMQ

    前言 在构建分布式系统时,选择适合的消息中间件是至关重要的决策。RabbitMQ、Kafka、ActiveMQ 和 RocketMQ 是当前流行的消息中间件之一,它们各自具有独特的特点和适用场景。本文将对这四种消息中间件进行综合比较,帮助您在项目中作出明智的选择。 1. RabbitMQ 特点: 消息模

    2024年02月20日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包