《Kafka 原理与架构分享》

news/2025/12/14 16:07:14/文章来源:https://www.cnblogs.com/duanjialin007/p/19349060
《Kafka 原理与架构分享》展开,详细介绍了 Kafka 的基本概念、特性、核心架构、分区与副本机制、消费与开发要点以及在数据服务中的应用,内容如下:
  • Kafka 概述
    • 基本定义
      • 开源平台:Kafka 是阿帕奇软件基金会开发的开源分布式事件流平台,2011 年由 LinkedIn 公司开源,经过多年发展已相当成熟。
      • 消息系统本质:本质上是分布式发布订阅消息系统,即消息队列,在公司数据领域应用广泛。
    • 主要特点
      • 高吞吐量:普通 PC 每秒可处理数十万条消息。
      • 低延迟:延迟可达毫秒级。
      • 容错性:通过多副本机制实现容错,类似 Hadoop 中 SDFS 存储的冗余方式。
      • 可扩展性:可构建集群,增加 broker 节点实现横向扩展。
  • Kafka应用场景
    • 消息系统
      • 解耦与流量削峰:在 a 系统和 b 系统间增加消息系统,实现解耦,b 系统可根据处理能力平滑消费消息,避免 a 系统高峰期流量打挂 b 系统。
      • 顺序性保障与回溯机制:通过消息的 offset 机制实现消息顺序性保障和回溯功能。
    • 存储系统:将消息持久化到磁盘,结合持久化和多副本机制保证数据长期存储不丢失。
    • 流式数据处理平台:提供完整流式处理类库,如窗口连接、变换、聚合等 API,但对大流量支持不佳,主流实时应用场景多使用 Spark 或 Flink。
  • Kafka 核心架构
        • 简单架构组件
          • producer:消息生产者,向 Kafka 集群发送消息。
          • broker:Hadoop 的一个实例,负责消息存储。
          • consumer:通过 pull 方式从 Kafka 集群获取消息,消费数量由 consumer 端控制。
          • zookeeper:作为 Kafka 元数据管理,后续会详细讲解。
     
    • 详细架构
      • Kafka 集群细化:broker 中有多个 topic,每个 topic 又分为多个 partition,每个 partition 有一个 leader 和多个 follower,读写操作针对 leader 进行,follower 从 leader 同步消息,leader 挂掉时 follower 可接替。
      • consumer group:消费者组概念,一个消费者组中可设置多个 consumer,但同一消费者组中的 consumer 只能消费一个 partition 中的消息。
  • Kafka 核心组件
    • BROKER
      • 消息存储管理:接收生产者消息,为消息设置递增偏移量并持久化到磁盘。
      • 分区 leader 机制:每个分区有一个 BROKER 作为 leader,处理分区所有读写请求。
    • producer
      • 消息传输任务:将业务系统实时数据流可靠高效传输到 Kafka,主要工作包括消息构造、序列化、分区选择和批次发送。
      • 核心功能:具备消息分区策略、可靠性保障机制和批量发送等优化功能。
    • consumer
      • 消息读取处理:从 Kafka 集群读取和处理消息,通过 offset 追踪已读取消息位置,存储在 consume offset topic 中。
      • 偏移量提交方式:有自动提交和手动提交两种,手动提交又分为同步和异步提交,异步提交效率较高。
      • 消费模式:包括队列模式和发布订阅模式。
    • topic 和 partition
      • 逻辑与物理概念:topic 是消息的逻辑分类单元,可理解为消息类别或频道;partition 是物理概念,最终数据存储在 partition 中,每个 partition 可分为多个 segment。
      • 文件结构:partition 是文件夹,包含 log 文件(消息具体内容)、两个 index 文件(稀疏索引加速消息查找)和 timeindex 文件(根据时间戳查找消息偏移量)。
    • zookeeper
      • 元数据管理:作为 Kafka 元数据管理和协调功能,存储节点注册、topic 分配、分区状态等元数据。
      • Controller 选举:集群启动或 Controller 故障时触发选举,谁先获取 Controller 临时节点谁就是 Controller;Kafka 2.8 版本引入 Kraft 模式,基于 Raft 协议选举,元数据存在 meta data topic 中,通过 epoch 机制避免脑裂问题。
  • Kafka 数据特性与机制
    • 数据持久化与清理
      • 顺序写入磁盘:消息通过 append only 方式顺序写入磁盘,避免随机写入性能损耗。
      • 保留策略:支持时间(retention.ms 或 hours)和空间(retention.bytes)作为消息保留策略。
      • 清理策略:包括删除策略(policy = delete)、压缩策略(policy = compact)和混合策略,根据保留条件清理冗余数据。
    • 吞吐量技术:包括磁盘顺序读写、0 拷贝技术、批量处理和内存映射。
    • 分区机制
      • 消息有序与负载均衡:每个 topic 分成多个 partition,partition 内消息通过 offset 保证有序,跨 partition 消息顺序无法保证;可通过设置 k 值将相同 k 的消息分配到同一 partition 实现全局有序,分区分布在不同 broker 上实现负载均衡。
      • 分区策略:Kafka 支持指定 partition、根据 key 的 hash 值取余和轮询算法三种分区策略。
      • 分区扩容与缩容:创建 topic 时需指定 partition 数量,后续只能增加不能减少,增加分区可实现 topic 扩容,减少分区涉及消息迁移,Kafka 不提供缩容功能。
    • 副本机制
      • leader - follower 模式:一个 leader 多个 follower,leader 处理读写请求,follower 同步数据,leader 失效时从 ISR 中选一个 follower 作为新 leader。
      • ACK 应答机制:提供 0、1、-1(all)三种可靠性级别,0 表示至多一次,-1 表示至少一次,启用幂等生产者可避免消息重复,实现精准一次需 Kafka 0.11 版本之后。
      • ISR 机制:leader 端维护动态同步副本集 ISR,保证数据一致性,follower 长时间不同步会被踢出 ISR;ISR 副本不足时 topic 进入只读状态。
      • 故障处理:follower 故障时 leader 无需重新选举,leader 故障时从 ISR 中选新 leader,ISR 为空时可等待 leader 恢复或从非同步副本集选择,前者数据不丢失,后者恢复快但可能丢失数据。
  • 消费者组与开发使用
    • 消费者组智能
      • 负载均衡与水平扩展:主要作用是实现负载均衡和水平扩展,消费者数量变化时会进行再平衡,重新分配分区。
      • 分区分配策略:包括 range 方式(默认,按字典排序分配连续分区,可能导致不均衡)、round Robin 方式(轮询分配,相对均衡)和粘性分配(尽量保持与上一次一致,减少动态平衡)。
    • Kafka 开发使用
      • 配置要点:配置 broker 地址(host + port)、序列化器(k 和 value 序列化器无默认值,需每次设置),生产者使用 -1(all)方式最安全但较慢。
      • 消费者开发:除类似配置外,还需设置 group ID 唯一标识消费者组。
      • 命令行操作:可查看、创建、删除 topic,指定副本数和分区数,修改分区数只能增加。
      • 安全与 ACL 控制:分布式系统安全涉及身份认证和鉴权,Kafka 有 SSL 和 Sasl 两种安全模式,典型的是基于 Kerberos 认证;ACL 控制是更细粒度的权限控制,可对用户、主机、topic、group 和 cluster 等进行读写、创建、删除、查看等操作授权。
  • Kafka数据服务中的使用
    • 数据处理流程:从 Kafka 读取 CTI、UDS、IVR 等消息,通过 RTME 实时指标计算引擎使用 Flink 实时流计算,将指标写入 Redis、ES 或 Kafka,IPE 实时读取 CDR 数据写入 starrocks。
    • 数据应用

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

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

相关文章

毕设分享 深度学习yolo11垃圾分类系统(源码+论文)

文章目录0 前言1 项目运行效果2 课题背景2.1. 研究背景2.2. 技术发展现状2.3. 现有技术存在的问题2.4. 研究意义2.5. 项目创新点2.6. 技术路线3 设计框架3.1. 技术选型与框架3.1.1 核心技术栈3.1.2 开发环境3.2. 系统架构设计3.2.1 整体架构3.2.2 模块划分3.3. 核心模块实现3.3…

Spring Boot 多模块开发完整指南

Spring Boot 多模块开发完整指南 Spring Boot 多模块开发是将一个大型项目拆分成多个相互关联的模块,每个模块有特定的职责。这种架构提高了代码的可维护性、可复用性和团队协作效率。 1. 多模块项目结构 1.1 典型的项…

C语言标点符号逗号和分号使用区别

最近在看linux的源码,突然想到一个问题,源码中的逗号和分号的区别,什么时候使用逗号,什么时候使用分号。逗号的含义是什么?分号的含义是什么?首先,逗号的含义是停顿,分开&#xff0c…

FunASR空白音频处理实战:从异常崩溃到稳定运行的完整解决方案

FunASR空白音频处理实战:从异常崩溃到稳定运行的完整解决方案 【免费下载链接】FunASR A Fundamental End-to-End Speech Recognition Toolkit and Open Source SOTA Pretrained Models, Supporting Speech Recognition, Voice Activity Detection, Text Post-proce…

第五章-Application类

一、退出方式 OnLastWindowClose:所有窗体关闭后应用程序关闭 OnMainWindowClose:主窗口关闭,应用程序关闭 OnExplicitShutdown:使用Shutdown方法关闭,否则关闭所有窗口应用程序也不关闭 Close():关闭…

计算机毕业设计springboot电子病例系统 基于SpringBoot的智慧医疗病历管理平台 SpringBoot驱动的数字化门诊病历云系统

计算机毕业设计springboot电子病例系统a62vfg20 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。“排队三小时,看病三分钟”曾是不少患者的真实写照,纸质病…

【python】pip 安装模块切国内源

临时指定 # 阿里云源(推荐) pip install numpy -i https://mirrors.aliyun.com/pypi/simple/ # 或清华源 pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple/ # 如果是python3+pip3 pip3 install nump…

力扣题解

目录 410.分割数组的最大值 4.寻找两个正序数组的中位数 51.N皇后 410.分割数组的最大值 这个题可以运用二分答案的算法来解题。定义一个左指针和一个右指针,令左指针等于数组的最大值,令右指针等于数组所有数之和。即最终的结果一定在他们之间。 lo…

Java基础 - java基本程序设计结构

数据类型 在java中一共有8种基本类型,其中有4种整型,2种浮点类型,1种字符类型, 1种布尔类型。整型 整型用于表示没有小数部分的数值,允许是负数。int 4 字节 -2 147 483 648 ~ 2 147 483 647 (刚刚超过20亿) …

计算机毕业设计springboot智能健身房管理系统 基于SpringBoot的智慧健身会所综合运营平台 面向健身俱乐部的SpringBoot智能服务与资源调度系统

计算机毕业设计springboot智能健身房管理系统t92tknvq (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。当“健康中国”成为国家战略,健身场馆数量呈爆发式增长&#x…

PageHelp插件使用

PageHelp插件使用 一、PageHelper 是什么? PageHelper 是 MyBatis 的一个开源分页插件,它通过拦截 MyBatis 执行的 SQL 语句,自动在原SQL上添加分页语句(如 MySQL 的 LIMIT),并同时查询总记录数。 核心特点:简单…

毕设项目 基于大数据的K-means广告效果分析

基于大数据的K-means广告效果分析 项目运行效果: 毕业设计 基于大数据的K-means广告效果分析🧿 项目分享:见文末! 一、分析背景和目的 在大数据时代的背景下,广告主可以购买媒介变成直接购买用户,广告的精准投放对广告主、服务…

VGGT如何重塑三维视觉:从单图理解到多视角重建的技术演进

VGGT如何重塑三维视觉:从单图理解到多视角重建的技术演进 【免费下载链接】vggt VGGT Visual Geometry Grounded Transformer 项目地址: https://gitcode.com/gh_mirrors/vg/vggt 视觉几何基础Transformer(VGGT)正在重新定义三维场景理…

点大商城系统v2全开源版基础上增加22复制7人成团功能的一些开发经验导图支持(链动n+1功能+排队免单功能+大屏数据)

说明:点大商城已经全开源,全系支持二次开发(功能修改、功能修复、增加功能、模板UI美化)完全按照用户需求进行开发,有功能您尽管提分享最近用户开发案例需求,可能也能给你新脑洞(22复制7人成团)…

【硕士生必看】毕业论文初稿写崩了?Paperzz智能生成+深度查重,助你3天逆袭,导师直呼“这水平够发核心”!

Paperzz-AI官网免费论文查重复率AIGC检测/开题报告/文献综述/论文初稿 https://www.paperzz.cc/dissertationhttps://www.paperzz.cc/dissertation 副标题: 硕士论文不是“写”出来的,是“炼”出来的!Paperzz帮你搞定文献、大纲、生成、查重、…

shell 容器执行脚本有异常时直接退出

shell 容器执行脚本有异常时直接退出# pod.yaml # set -e:当脚本中有命令执行返回非0时,脚本会立即终止执行并异常退出。 # set -u:当脚本中引用了未定义的变量时,脚本会立即终止执行并异常退出。 ... containers:…

【单片机毕业设计】【mcugc-mcu910】基于单片机的温控风扇

一、基本介绍 功能: 1、通过DS1302同步时间,并可修正时间,同时可设定风扇开关时间 2、通过DS18B20检测温度,当温度大于设置最小值,才开启风扇,在最小值和最大值之间,低速转动,大于最…

08cms房产多城市版最新v8.7含小程序及装修网的安装及配置方法整理出来希望能帮到大家

目前市面上很多假货!都是用很早期的版本来冒充,大家要提高警惕!此系统默认已经授权,无域名使用限制了,但是框架特殊 配置也比较陌生,我整理出配置方法分享给大家(另外我这里有所有补丁 从低版本…

彻底掌握pyenv:Shim机制如何让Python版本管理如鱼得水

彻底掌握pyenv:Shim机制如何让Python版本管理如鱼得水 【免费下载链接】pyenv Simple Python version management 项目地址: https://gitcode.com/GitHub_Trending/py/pyenv 你是否曾在多个Python项目间切换时,被版本兼容性问题搞得焦头烂额&…

【博士生必看】博士论文初稿写不动了?Paperzz智能辅助+权威查重,助你突破瓶颈,导师说“这思路可以申基金”!

Paperzz-AI官网免费论文查重复率AIGC检测/开题报告/文献综述/论文初稿 https://www.paperzz.cc/dissertationhttps://www.paperzz.cc/dissertation 副标题: 博士论文不是“熬”出来的,是“智”出来的!Paperzz帮你搞定海量文献、复杂大纲、深度…