持续总结中!2024年面试必问 20 道 Kafka面试题(一)
一、Kafka 的基础概念有哪些?
Kafka 是一个分布式流处理平台,由 LinkedIn 开发,并于 2011 年成为 Apache 软件基金会的一部分。以下是 Kafka 的一些基础概念:
-
Broker: Kafka 集群由多个 Broker 组成,每个 Broker 存储消息数据并提供消息服务。Broker 充当消息生产者和消费者之间的中介。
-
Topic: Kafka 中的消息以 Topic 为单位进行分类。一个 Topic 可以被视为一个消息类别或者消息队列。生产者将消息发送到特定的 Topic,而消费者从 Topic 中读取消息。
-
Partition: 为了能够横向扩展和并行处理,每个 Topic 可以被分割成多个 Partition。Partition 是 Kafka 中数据的基本存储单元,每个 Partition 在物理上对应一个日志文件,消息在写入时会被追加到日志文件的末尾。
-
Producer: 生产者是向 Kafka Broker 发送消息的客户端。生产者负责创建消息并决定将消息发送到哪个 Topic 的哪个 Partition。
-
Consumer: 消费者是读取 Kafka Broker 上消息的客户端。消费者可以订阅一个或多个 Topic,并从 Partition 中读取消息。
-
Consumer Group: 消费者组是 Kafka 中的一个核心概念,用于实现消息的并发消费和负载均衡。一个 Consumer Group 由多个 Consumer 组成,它们共同消费订阅的 Topic 中的消息。
-
Replica: 为了提高数据的可靠性和可用性,Kafka 支持消息的副本机制。每个 Partition 都可以有多个 Replica,其中有一个 Leader 和若干 Follower。Leader 负责处理所有的读写请求,而 Follower 从 Leader 中同步数据。
-
Leader: 在一个 Partition 的所有 Replica 中,会选举出一个 Leader。所有的读写操作都是通过 Leader 来进行的。
-
Follower: 除了 Leader 之外的其他 Replica 称为 Follower。Follower 的任务是复制 Leader 的数据,以保证数据的高可用性。
-
Controller: Kafka 集群中会有一个 Broker 被选举为 Controller,负责管理集群的元数据和 Partition 的 Leader 选举。
-
ZooKeeper: 在 Kafka 的早期版本中,ZooKeeper 被用来进行集群协调,如选举 Controller、管理 Partition 的状态等。但在新版本中,Kafka 正在逐步去除对 ZooKeeper 的依赖。
-
Offset: Offset 是 Kafka 中用于追踪消息位置的机制。每个消息在 Partition 中都有一个唯一的 Offset,消费者使用 Offset 来确定自己读取消息的位置。
-
Message: Kafka 中的消息是字节数组,它与特定的业务逻辑无关,生产者和消费者可以自定义序列化和反序列化的方式。
-
ISR (In-Sync Replicas): ISR 是指与 Leader 保持同步的 Follower Replicas 的集合。Leader 会维护一个 ISR 列表,确保数据的一致性。
-
High Availability (HA): Kafka 通过 Partition 的副本机制实现了高可用性。如果 Leader 宕机,会从 ISR 中选举出新的 Leader。
-
Durability: Kafka 通过将消息持久化到磁盘,并使用 Replica 来保证消息的持久性,从而确保数据不会丢失。
-
Scalability: Kafka 可以水平扩展,通过增加 Broker 的数量来处理更多的数据和请求。
-
Fault Tolerance: Kafka 的设计允许集群中的节点失败,而不会丢失数据或停止服务。
-
Stream Processing: Kafka 不仅支持消息队列的功能,还支持流处理,可以对数据流进行实时处理和分析。
-
Exactly-Once Semantics (EOS): Kafka 支持精确一次的消息传递语义,确保消息在传输过程中不会丢失或重复。
这些基础概念构成了 Kafka 的核心架构,使其成为一个强大且灵活的分布式消息系统。
二、Broker 在 Kafka 中扮演什么角色?
在 Kafka 架构中,Broker 扮演着至关重要的角色。以下是 Broker 在 Kafka 中的主要功能和特点:
-
消息存储: Broker 是 Kafka 集群中的消息存储节点。每个 Broker 存储着多个 Topic 的消息数据。这些数据被分成多个 Partition,每个 Partition 相当于一个日志文件,消息被追加到日志文件的末尾。
-
消息处理: Broker 负责处理来自生产者的消息发送请求和来自消费者的消息读取请求。生产者将消息发送到特定的 Topic 和 Partition,Broker 负责接收并将这些消息存储在对应的日志文件中。消费者从 Broker 读取消息,并根据 Offset 来确定读取的位置。
-
负载均衡: Kafka 集群由多个 Broker 组成,每个 Broker 可以存储多个 Partition。这种设计允许 Kafka 通过增加 Broker 的数量来实现水平扩展,从而处理更多的消息数据和请求。
-
数据复制: 为了提高数据的可靠性和可用性,Broker 支持消息的副本机制。每个 Partition 可以有多个 Replica,包括一个 Leader 和多个 Follower。Broker 负责管理这些 Replica,确保数据在 Leader 和 Follower 之间同步。
-
Leader 选举: 当一个 Partition 的 Leader 宕机时,Broker 负责从 Follower 中选举出新的 Leader。这个过程称为 Leader 选举,确保 Partition 的高可用性。
-
数据持久性: Broker 通过将消息持久化到磁盘来保证数据的持久性。即使在 Broker 宕机的情况下,只要 Replica 存在,消息数据也不会丢失。
-
数据一致性: Broker 负责维护 Partition 的数据一致性。在写入消息时,Broker 会等待所有同步的 Replica(即 ISR 中的 Replica)确认消息已写入,然后才向生产者确认消息发送成功。
-
集群协调: 在 Kafka 的早期版本中,Broker 依赖 ZooKeeper 来进行集群协调,如选举 Controller、管理 Partition 的状态等。但在新版本中,Kafka 正在逐步去除对 ZooKeeper 的依赖,转而使用内部的 Raft 协议进行集群管理。
-
配置管理: Broker 负责管理 Kafka 集群的配置信息,如 Topic 的配置、日志保留策略、副本因子等。这些配置信息对集群的行为和性能有重要影响。
-
网络通信: Broker 作为 Kafka 集群的网络节点,负责处理来自生产者和消费者的网络请求。Broker 监听来自客户端的连接请求,并维护与客户端之间的网络连接。
-
资源管理: Broker 管理其自身的资源使用情况,包括 CPU、内存、磁盘和网络资源。Broker 需要合理地分配和管理资源,以支持高效的消息处理。
-
监控和日志: Broker 提供监控接口,允许管理员监控 Broker 的运行状态和性能指标。此外,Broker 还会记录日志信息,用于问题诊断和性能分析。
总之,Broker 在 Kafka 中扮演着消息存储、处理、复制、协调和管理的核心角色,是 Kafka 高性能、高可用和可扩展架构的关键组成部分。
相关文章:
持续总结中!2024年面试必问 20 道 Kafka面试题(一)
一、Kafka 的基础概念有哪些? Kafka 是一个分布式流处理平台,由 LinkedIn 开发,并于 2011 年成为 Apache 软件基金会的一部分。以下是 Kafka 的一些基础概念: Broker: Kafka 集群由多个 Broker 组成,每个 Broker 存储…...
Linux共享内存创建和删除
最近项目中使用到了共享内存记录下 创建共享内存: 删除共享内存: 代码: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <fcntl.h> #include <sys/mman.h> #include <sys/stat.h> #include <u…...
微信小程序如何自定义tabbar
微信小程序自定义底部tabbar是一个提升用户体验和增加小程序个性化的重要功能。以下是自定义底部tabbar的步骤,以供参考: 一、自定义tabbar的重要性 微信小程序默认的底部导航栏(tabbar)样式和布局是固定的,开发者无…...
【并发程序设计】15.信号灯(信号量)
15.信号灯(信号量) Linux中的信号灯即信号量是一种用于进程间同步或互斥的机制,它主要用于控制对共享资源的访问。 在Linux系统中,信号灯作为一种进程间通信(IPC)的方式,与其他如管道、FIFO或共享内存等IPC方式不同&…...
【操作与配置】VS2017与MFC环境配置
【操作与配置】VS2017与MFC环境配置 概述 Visual Studio 是一款强大且多功能的集成开发环境(IDE),适用于软件开发人员和团队。使用此应用程序,您可以构建和调试现代Web应用程序,并利用扩展帮助探索几乎任何编程语言。…...
遥感影像信息提取
刘老师(副教授),来自双一流重点高校,长期从事GIS/RS/3S技术及其生态环境领域中的应用等方面的研究和教学工作,并参与GIS的二次开发,发表多篇sci论文,具有资深的技术底蕴和专业背景。 专题一&am…...
LRU算法
文章目录 LRU算法LRU 如何实现LinkedHashMap来实现的LRU算法的缓存HashMap实现LRU算法的缓存 LRU算法 LRU(Least Recently Used)算法可以使用哈希表和双向链表来实现。哈希表用于快速查找数据,双向链表用于记录数据的访问顺序。以下是LRU算法…...
JVM运行时数据区 - 程序计数器
运行时数据区 Java虚拟机在执行Java程序的过程中,会把它管理的内存划分成若干个不同的区域,这些区域有各自的用途、创建及销毁时间,有些区域随着虚拟机的启动一直存在,有些区域则随着用户线程的启动和结束而建立和销毁࿰…...
1.JAVA小项目(零钱通)
一、说明 博客内容:B站韩顺平老师的视频,以及代码的整理。此项目分为两个版本: 面向过程思路实现面向对象思路实现 韩老师视频地址:【【零基础 快速学Java】韩顺平 零基础30天学会Java】 https://www.bilibili.com/video/BV1fh4…...
Redis这一篇就够了
一.概述 Redis是什么? Redis是远程服务字典服务,是一个开源的使用ANSI C语言编写,支持网络,可基于内存亦可持久化的日志型,Key-Value数据库,并提供多种语言的API。 redis会周期性把更新的数据写入磁盘或把…...
Java web应用性能分析之【jvisualvm远程连接云服务器】
Java web应用性能分析之【java进程问题分析概叙】-CSDN博客 Java web应用性能分析之【java进程问题分析工具】-CSDN博客 前面整理了java进程问题分析和分析工具,现在可以详细看看jvisualvm的使用,一般java进程都是部署云服务器,或者托管IDC机…...
springboot发送短信验证码,结合redis 实现限制,验证码有效期2分钟,有效期内禁止再次发送,一天内发送超3次限制
springboot结合redis发送短信验证码,实现限制发送操作 前言(可忽略)实现思路正题效果图示例手机号不符合规则校验图成功发送验证码示例图redis中缓存随机数字验证码,2分钟后失效删除redis缓存图验证码有效期内 返回禁止重复发送图验证码24小时内发送达到3次…...
【Python】使用 Pandas 统计每行数据中的空值
缘分让我们相遇乱世以外 命运却要我们危难中相爱 也许未来遥远在光年之外 我愿守候未知里为你等待 我没想到为了你我能疯狂到 山崩海啸没有你根本不想逃 我的大脑为了你已经疯狂到 脉搏心跳没有你根本不重要 🎵 邓紫棋《光年之外》 在数据分析…...
1pannel部署onenav导航容器编排模板
onenav导航 1pannel部署onenav导航容器编排模板 networks:1panel-network:external: true services:onenav:container_name: onenavimage: helloz/onenav:latestlabels:createdBy: Appsnetworks:- 1panel-networkports:- 127.0.0.1:{port}:80environment:- TZAsia/Shanghaivol…...
linux--实时性优化
linux--实时性优化 1 介绍2 实时性需求3 代表性实时系统4 嵌入式系统嵌入式软件系统结构处理器时钟节拍多任务机制任务调度方式任务调度算法时间片调度算法优先级调度算法基于优先级的时间片调度算法 5 cyclictest 测试工具命令说明命令分析参数含义 6 linux 实时性改进某版本上…...
React-基础样式控制
组件基础样式方案 React组件基础的样式控制有两种方式 1、行内样式(不推荐) 属性名是多个单词的需要使用驼峰写法 也可以把样式都提取到一个变量里,再赋值到style里 2、class类名控制 classnames优化类名控制 classnames是一个简单的JS库&…...
制作ChatPDF之前端Vue搭建(二)
前端界面 接上篇: 制作ChatPDF之Elasticsearch8.13.4搭建(一) 为了实现一个基于 Vue.js 的前端应用,用户可以上传 PDF 文件,输入查询,并在输出框中显示查询结果,你需要以下步骤: 初始化 Vue …...
汽车IVI中控开发入门及进阶(二十一):DAB和FM 收音机
前言: 在过去的十年里,数字收音机对车载娱乐产生了重大影响。现在,几乎每辆新车都标配了这项技术,这也是我们60%以上的人收听收音机的方式。甚至有传言称,在不久的将来,将永久关闭调频发射机,使许多车载收音机过时。但一些相对年轻的汽车在工厂里仍然没有安装DAB,而且…...
智能sql LLM
DB-GPT:彻底改变数据库与私有LLM技术的交互 智能SQL生成:后端技术与LLM的完美结合 智能SQL生成:后端技术与LLM的完美结合_llm sql-CSDN博客 GitHub - eosphoros-ai/DB-GPT: AI Native Data App Development framework with AWEL(Agentic Wor…...
大聪明教你学Java | 深入浅出聊 Stream.parallel()
前言 🍊作者简介: 不肯过江东丶,一个来自二线城市的程序员,致力于用“猥琐”办法解决繁琐问题,让复杂的问题变得通俗易懂。 🍊支持作者: 点赞👍、关注💖、留言Ǵ…...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...
Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...
协议转换利器,profinet转ethercat网关的两大派系,各有千秋
随着工业以太网的发展,其高效、便捷、协议开放、易于冗余等诸多优点,被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口,具有实时性、开放性,使用TCP/IP和IT标准,符合基于工业以太网的…...
深入浅出WebGL:在浏览器中解锁3D世界的魔法钥匙
WebGL:在浏览器中解锁3D世界的魔法钥匙 引言:网页的边界正在消失 在数字化浪潮的推动下,网页早已不再是静态信息的展示窗口。如今,我们可以在浏览器中体验逼真的3D游戏、交互式数据可视化、虚拟实验室,甚至沉浸式的V…...
Xcode 16 集成 cocoapods 报错
基于 Xcode 16 新建工程项目,集成 cocoapods 执行 pod init 报错 ### Error RuntimeError - PBXGroup attempted to initialize an object with unknown ISA PBXFileSystemSynchronizedRootGroup from attributes: {"isa">"PBXFileSystemSynchro…...
Modbus转ETHERNET IP网关:快速冷却系统的智能化升级密钥
现代工业自动化系统中,无锡耐特森Modbus转Ethernet IP网关MCN-EN3001扮演着至关重要的角色。通过这一技术,传统的串行通讯协议Modbus得以在更高速、更稳定的以太网环境中运行,为快速冷却系统等关键设施的自动化控制提供了强有力的支撑。快速冷…...
DOM(文档对象模型)深度解析
DOM(文档对象模型)深度解析 DOM 是 HTML/XML 文档的树形结构表示,提供了一套让 JavaScript 动态操作网页内容、结构和样式的接口。 一、DOM 核心概念 1. 节点(Node)类型 类型值说明示例ELEMENT_NODE1元素节点<div>, <p>TEXT_NODE3文本节点元素内的文字COMMEN…...
