当前位置: 首页 > news >正文

Kafka面试题及原理

1. 消息可靠性(不丢失)

使用Kafka在消息的收发过程都会出现消息丢失,Kafka分别给出了解决方案

  • 生产者发送消息到Brocker丢失
  • 消息在Brocker中存储丢失
  • 消费者从Brocker
    在这里插入图片描述

在这里插入图片描述

幂等方案:【分布式锁、数据库锁(悲观锁、乐观锁)】

1.1 生产者发送消息到Brocker丢失

设置异步发送
在这里插入图片描述

1.2 消息在Brocker中存储丢失

在这里插入图片描述

1.3 消费者从Brocker接收消息丢失

在这里插入图片描述

在这里插入图片描述

如果consumer(消费者)挂掉,自动偏移量的错误可能会导致丢失或重复消费数据
解决方案:禁用自动提交偏移量,改为手动

  • 同步提交(阻塞)
  • 异步提交(信息不准确)
  • 同步+异步组合提交

2. 消息顺序性

应用场景:

  • 即时消息中的单对单聊天和群聊,保证发送方消息发送顺序与接收方的顺序一致
  • 充值转账两个渠道在同一个时间进行余额变更,短信通知必须要有顺序
    问题原因:
    一个topic的数据可能存储在不同的分区中每个分区都有一个按照顺序的存储的偏移量,如果消费者关联了多个分区不能保证顺序性
    解决方案(把消息存储在同一个分区下):
  • 发送消息时指定分区号
  • 发送消息时按照相同的业务设置相同的key

3. 高可用机制

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

3.1 集群模式

在这里插入图片描述

3.2 分区备份机制

  • 一个topic有多个分区,每个分区有多个副本,其中有一个leader,其余的是follower,副本存储在不同的broker中
  • 所有的分区副本的内容是都是相同的,如果leader发生故障时,会自动将其中一个follower提升为leader
    在这里插入图片描述

在这里插入图片描述

过多的同步复制会降低效率(同步易阻塞),所以只设置较少的ISR

4. 数据清理机制

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

4.1 文件存储机制

  • Kafka中topic的数据存储在分区上,分区如果文件过大会分段存储segment
  • 每个分段都在磁盘上以索引(xxxx.index)和日志文件(xxxx.log)的形式存储
  • 分段的好处是,第一能够减少单个文件内容的大小,查找数据方便,第二方便kafka进行日志清理。
    在这里插入图片描述

4.2 数据清理机制

在这里插入图片描述

5. 高性能设计

  • 消息分区:不受单台服务器的限制,可以不受限的处理更多的数据
  • 顺序读写:磁盘顺序读写,提升读写效率
  • 页缓存:把磁盘中的数据缓存到内存中,把对磁盘的访问变为对内存的访问
  • 零拷贝:减少上下文切换及数据拷贝
  • 消息压缩:减少磁盘IO和网络10
  • 分批发送:将消息打包批量发送,减少网络开销

5.1 零拷贝

在开启拷贝读信息要拷贝4次(性能不高)
在这里插入图片描述

开启零拷贝(页缓存)后只拷贝两次
在这里插入图片描述

http://www.lryc.cn/news/545534.html

相关文章:

  • Grok 3 AI 角色扮演提示词 化身顶级设计师
  • 从零开始设计一个完整的网站:HTML、CSS、PHP、MySQL 和 JavaScript 实战教程
  • CSS 对齐:深入理解与技巧实践
  • oracle游标为什么没有共享,统计一下原因
  • IDEA中.gitignore未忽略指定文件的问题排查与解决
  • 通往 AI 之路:Python 机器学习入门-语法基础
  • 形象生动讲解Linux 虚拟化 I/O
  • 6. Nginx 动静分离配置案例(附有详细说明+配图)
  • 数据集笔记:新加坡停车费
  • SQL经典题型
  • 最新Java面试题,常见面试题及答案汇总
  • 学习第九天-栈
  • Java基础关键_016_System 类
  • 计算机毕设JAVA——某高校宿舍管理系统(基于SpringBoot+Vue前后端分离的项目)
  • 【 实战案例篇三】【某金融信息系统项目管理案例分析】
  • vivado 避免本地时钟、创建输出时钟
  • 二十三种设计模式
  • uniapp 中引入使用uView UI
  • 用冒泡排序法模拟qsort函数
  • DCN讲解
  • nginx的作用和应用场景
  • [Lc滑动窗口_1] 长度最小的数组 | 无重复字符的最长子串 | 最大连续1的个数 III | 将 x 减到 0 的最小操作数
  • 基于python的网络爬虫爬取天气数据及可视化分析(Matplotlib、sk-learn等,包括ppt,视频)
  • 【缓存】缓存雪崩与缓存穿透:高并发系统的隐形杀手
  • HTML AI 编程助手
  • 李宏毅机器学习课程学习笔记04 | 浅谈机器学习-宝可梦、数码宝贝分类器
  • AIGC(生成式AI)试用 26 -- 跟着清华教程学习 - DeepSeek与AI幻觉
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_conf_add_dump
  • QEMU源码全解析 —— 内存虚拟化(23)
  • 【北京迅为】itop-3568 开发板openharmony鸿蒙烧写及测试-第1章 体验OpenHarmony—烧写镜像