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

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

1. 介绍

  • 使用kafka在消息的收发过程都有可能会出现消息丢失
    (1)生产者发送消息到broker丢失
    (2)消息在broker中存储丢失
    (3)消费者从broker接收消息丢失
    在这里插入图片描述

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

  • 设置异步发送:同步发送会发生阻塞,一般使用异步发送方式发送消息
    在这里插入图片描述
  • 消息重试:由于网络抖动,造成消息发送失败,可以使用kafka提供的重试机制
    在这里插入图片描述

3. 消息在broker中存储丢失

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

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

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

5. 总结

在这里插入图片描述

6. 参考答案

在这里插入图片描述

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

1. 介绍

  • 问题原因
    (1)一个topic中的数据可能存储在不同的分区中,每个分区都有一个按照顺序的存储偏移量,如果消费者关联了多个分区,则不能保证消费的顺序性
  • 解决方案
    (1)发送消息时,指定分区号,往同一个分区中存储消息
    (2)发送消息时,按照相同的业务设置相同的key
    在这里插入图片描述

2. 案例分析

  • springboot集成kafkatemplate
    在这里插入图片描述

3. 参考答案

在这里插入图片描述

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

1. 介绍

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

2. 集群模式

在这里插入图片描述

3. 分区备份机制

在这里插入图片描述
在这里插入图片描述

4. 总结

在这里插入图片描述

5. 参考答案

在这里插入图片描述

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

1. 介绍

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

2. kafka文件存储机制

在这里插入图片描述

3. 数据清理机制

在这里插入图片描述

4. 总结

在这里插入图片描述

5. 参考答案

在这里插入图片描述

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

1. 介绍

在这里插入图片描述

2. 参考答案

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/13983.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小程序picker 在苹果手机不兼容 bug,按month时在iPhone 显示不正确及自动定位时间问题

如下图&#xff1a;点击弹出时间列表&#xff1a;日历控件点击选择显示1年1月 解决: 加上起始时间字段 <picker mode"date" value"{{date}}" start"1970-09-01" end"2030-09-01"></picker> 问题二&#xff1a; 还是&a…

【MySQL】事务与隔离级别详解

【MySQL】事务 事务的概念为什么要有事务引擎对事务的支持事务的提交方式事务的操作准备正常事务操作&#xff1a;启动、回滚、提交非正常事务总结 事务的隔离级别隔离性隔离级别隔离级别的查看设置隔离级别会话级别全局级别 隔离级别的具体体现读未提交 Read Uncommitted读提交…

数学建模学习(6):数学建模数据预处理专题

1 数据预处理是什么&#xff1f; 在数学建模赛题中&#xff0c;官方给所有参赛选手的数据可能受到主 观或客观条件的影响有一定的问题&#xff0c;如果不进行数据的处理而直 接使用的话可能对最终的结果造成一定的影响&#xff0c;因此为了保证数 据的真实性和建模结果的可靠…

回归预测 | MATLAB实现PSO-GPR粒子群优化高斯过程回归多输入单输出回归预测

回归预测 | MATLAB实现PSO-GPR粒子群优化高斯过程回归多输入单输出回归预测 目录 回归预测 | MATLAB实现PSO-GPR粒子群优化高斯过程回归多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab基于PSO-GPR基于粒子群算法优化高斯过程回归的数据回归预…

建设银行秋招指南,备考技巧和考试内容详解

建设银行秋招简介 银行作为非常吃香的岗位&#xff0c;每年都有不少同学通过投递简历&#xff0c;进入笔试&#xff0c;再到面试成功&#xff0c;成功到银行就职&#xff0c;也有相当一部分同学因为信息差&#xff0c;符合条件却没有报名。无法进入银行工作。 建设银行的秋招…

QT【day4】

chat_QT服务器端&#xff1a; //.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QTcpServer> //服务器类 #include<QTcpSocket> //客户端类 #include<QMessageBox> //对话框类 #include<QList> //链表容器 #inc…

Java面试准备篇:全面了解面试流程与常见问题

文章目录 1.1 Java面试概述1.2 面试流程和注意事项1.3 自我介绍及项目介绍1.4 常见面试问题 在现代职场中&#xff0c;面试是求职过程中至关重要的一环&#xff0c;特别是对于Java开发者而言。为了帮助广大Java开发者更好地应对面试&#xff0c;本文将提供一份全面的Java面试准…

【如何训练一个中英翻译模型】LSTM机器翻译模型部署之ncnn(python)(五)

系列文章 【如何训练一个中英翻译模型】LSTM机器翻译seq2seq字符编码&#xff08;一&#xff09; 【如何训练一个中英翻译模型】LSTM机器翻译模型训练与保存&#xff08;二&#xff09; 【如何训练一个中英翻译模型】LSTM机器翻译模型部署&#xff08;三&#xff09; 【如何训练…

flask的配置项

flask的配置项 为了使 Flask 应用程序正常运行&#xff0c;有多种配置选项需要考虑。下面是一些基本的 Flask 配置选项&#xff1a; DEBUG: 这个配置项决定 Flask 是否应该在调试模式下运行。如果这个值被设为 True&#xff0c;Flask 将会提供更详细的错误信息&#xff0c;并…

go 查询采购单设备事项V3

一、版本说明 本版本在整合上两次的功能基础上&#xff0c;引进ini配置文件的读取事项&#xff0c;快速读取本地配置文件&#xff0c;完成读取设置 第一版&#xff1a;实现了严格匹配模式的查找 https://blog.csdn.net/wtt234/article/details/131979385 第二版&#xff1a;实…

作为程序员,你很有必要了解一下IVX

一、IVX是什么 iVX 是一个“零代码”的可视化编程平台&#xff0c;拥有方便的在线集成开发环境&#xff0c;不需要下载开发环境&#xff0c;打开浏览器即可随时随地进行项目编辑。iVX 还拥有“一站式”的云资源&#xff0c;通过这一套一站式服务&#xff0c;iVX 可以实现一站式…

详解STM32的GPIO八种输入输出模式,GPIO各种输入输出的区别、初始化的步骤详解,看这文章就行了(超详细)

在STM32微控制器中&#xff0c;常见的输入输出(GPIO)模式有八种&#xff0c;分别是推挽输出、开漏输出、复用推挽输出、复用开漏输出、浮空输入、上拉输入、下拉输入和模拟输入。下面我将为你解释每种模式的特点和区别&#xff0c;并提供相应的示例代码。 文章目录 介绍区别初…

MySql002——关系型数据库基础知识

前言&#xff1a;因为本专栏学习的是MySQL&#xff0c;而MySQL是关系型数据库&#xff0c;所以这篇文章就来介绍一些关系型数据库基础知识&#xff0c;至于其他知识小伙伴们可以自行学习&#xff0c;同时不足之处也欢迎批评指正&#xff0c;谢谢~ 一、MySQL关系型数据库(RDBMS)…

从实践彻底掌握MySQL的主从复制

目录 一、本次所用结构如图---一主多从级联&#xff1a; 二、IP。 三、配置M1&#xff1a; 四、从库M1S1&#xff1a; 五、从库M2配置&#xff1a; 六、 从库M2S1&#xff1a; 一、本次所用结构如图--- 一主多从级联&#xff1a; 二、IP。这里M1S1和M1S2一样的&#xff0…

图技术在 LLM 下的应用:知识图谱驱动的大语言模型 Llama Index

LLM 如火如荼地发展了大半年&#xff0c;各类大模型和相关框架也逐步成型&#xff0c;可被大家应用到业务实际中。在这个过程中&#xff0c;我们可能会遇到一类问题是&#xff1a;现有的哪些数据&#xff0c;如何更好地与 LLM 对接上。像是大家都在用的知识图谱&#xff0c;现在…

查看maven发布时间的方法

查看maven发布时间的方法如下【 打开maven官网 选中Release Notes 即可查看对应版本的发布时间 】

【计算机网络】第 4 课 - 物理层

欢迎来到博主 Apeiron 的博客&#xff0c;祝您旅程愉快 &#xff01; 时止则止&#xff0c;时行则行。动静不失其时&#xff0c;其道光明。 目录 1、物理层的基本概念 2、物理层协议的主要任务 3、物理层任务 4、总结 1、物理层的基本概念 在计算机网络中&#xff0c;用来…

基于多场景的考虑虑热网网损的太阳能消纳能力评估研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

windows切换php版本以及composer

前提 安装php8.2 安装Php7.4 下载 nts是非线程安全的&#xff0c;这里选择线程安全的&#xff0c;选择64位 解压缩 修改系统环境变量 修改为php-7的 cmd中输入php -v查看 找到composer存放路径C:\ProgramData\ComposerSetup\bin 将三个文件复制到php目录下 重启电脑…

2023年深圳杯数学建模赛题浅析

由于今明两日由于一些不可避免的事情&#xff0c;这里仅仅先给大家简单写一个赛题浅析&#xff0c;详细过程步骤思路以及讲解视频预计后天发布 A题 影响城市居民身体健康的因素分析 A题以慢性病为命题背景&#xff0c;给出数据以及题目初步来看来看为一个数据处理数据分析的综…