Kafka 介绍

Apache Kafka 是一个开源的 分布式流处理平台,最初由 LinkedIn 开发,后捐赠给 Apache 软件基金会。它被设计用于高吞吐量、低延迟、可水平扩展地处理实时数据流。官网地址是:https://kafka.apache.org/

以下是 Kafka 的核心介绍:

核心概念

消息系统 (Messaging System)
Kafka 充当生产者和消费者之间的消息中间件,解耦系统,确保可靠的数据传递。

流处理平台 (Stream Processing)
支持实时处理数据流(如过滤、转换、聚合)。

存储系统 (Storage System)
数据可持久化存储(默认保留7天,可配置),支持故障恢复。

核心组件

组件作用
Producer 生产者向 Kafka 推送数据(如日志、事件)
Consumer 消费者从 Kafka 拉取数据并进行处理
Broker Kafka 服务器节点组成集群,负责存储和传递消息
Topic 逻辑消息分类(如 user_activity)生产者按 Topic 发送消息
Partition Topic 的分区(物理分片)实现并行处理和水平扩展。每个分区内消息有序
Replica 分区的副本(Leader 处理读写,Follower 同步数据)保障高可用
ZooKeeper管理集群元数据、Broker 状态和选举(Kafka 3.0+ 逐步移除依赖)

核心特性

  1. 超高吞吐量 & 低延迟

  • 吞吐量:单机每秒可处理 数十万条消息(轻松达百万级/秒),集群可扩展至 PB/天 级别。
  • 延迟:消息从生产到消费可控制在 毫秒级(通常 2~10ms)。
  • 技术支撑:
    ✅ 顺序磁盘 I/O(避免随机寻址)
    ✅ 零拷贝(Zero-Copy)技术减少内核态数据复制
    ✅ 批量压缩(Snappy、LZ4)
  1. 持久化存储与可靠性

  • 持久化:所有消息直接写入磁盘(非内存缓存),支持 TB 级数据保留(可配置保留策略)。
  • 高可靠:
    ✅ 副本机制(Replication):每个分区多副本存储(默认 3 副本)
    ✅ ISR(In-Sync Replicas) 机制保障数据一致性
    ✅ 生产者可配置 acks=all 确保数据写入所有副本后才确认
  1. 水平扩展能力

  • 无缝扩容:
    ✅ 通过增加 Broker 节点扩展集群容量
    ✅ 通过增加 Topic 分区数提升并行度
  • 负载均衡:分区自动均衡到集群所有节点,无需人工干预。
  1. 分布式架构与高容错

  • 去中心化:无单点瓶颈,Broker 节点对等。
  • 故障自愈:
    ✅ Leader 分区故障时,Follower 自动选举为新 Leader
    ✅ 消费者组自动重平衡(Rebalance)
    ✅ 数据副本保障节点宕机时 零数据丢失
  1. 多租户与生态整合

  • 多租户支持:通过认证(SASL/SSL)和配额(Quotas)实现资源隔离。
  • 丰富生态:
    ✅ Kafka Connect:快速集成数据库、ES、S3 等外部系统
    ✅ Kafka Streams:轻量级流处理库(无需额外集群)
    ✅ Schema Registry:统一管理 Avro/Protobuf 消息格式
  1. 消费者组模型灵活性

  • 发布/订阅 & 队列模式:
    ✅ 广播模式:多个消费者组独立消费全量数据
    ✅ 队列模式:同组内消费者分区负载均衡(每条消息仅被组内一个消费者处理)
  • 位移管理:消费者可手动/自动提交消费进度(Offset),支持重播历史数据。
  1. 精准一次语义(Exactly-Once Semantics, EOS)

  • 跨系统一致性:通过 Kafka Streams API 或 事务型生产者(idempotence=true + 事务)实现:
    ✅ 生产端:避免消息重复写入
    ✅ 消费端:确保“处理 + 提交 Offset”原子性

典型应用场景

  1. 实时数据管道
    将数据从源系统(数据库、日志)同步到数据仓库(如 Hadoop、Snowflake)。

  2. 事件驱动架构
    微服务间通过事件通信(如订单支付触发库存更新)。

  3. 日志聚合
    集中收集分布式系统的日志(替代 ELK 中的 Logstash)。

  4. 实时流处理
    结合 Kafka Streams 或 Flink 实时分析用户行为、监控指标。

  5. 消息队列
    替代传统 MQ(如 RabbitMQ),尤其适用于大数据量场景。

版本与生态

主流版本:Kafka 3.x(已移除 ZooKeeper 依赖,使用 KRaft 共识协议)。

与其他消息队列的对比优势

特性KafkaRabbitMQ / RocketMQ
吞吐量⭐⭐⭐⭐⭐ (百万级/秒)⭐⭐ (万级/秒)
数据持久化⭐⭐⭐⭐⭐ (磁盘存储 + 多副本)⭐⭐ (内存为主,持久化性能低)
水平扩展⭐⭐⭐⭐⭐ (分区 + Broker 动态扩展)⭐⭐ (集群扩展复杂)
消息回溯⭐⭐⭐⭐⭐ (支持任意时间点重消费)⭐ (需手动备份)
流处理能力⭐⭐⭐⭐ (原生 Kafka Streams 支持)❌ (需额外工具)

参考:
deepseek
B站项桦瑾Kafka介绍

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

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

相关文章

CH9121T电路及配置详解

目录1. CH9121T简介2. 原理图及接口2.1 参考电路2.2 CH9121T评估板2.3 差分端口2.4 网口灯显示2.5 晶振2.6 其他接口3. 使用手册及说明3.1 配置介绍3.2 默认参数3.3 串口波特率3.4 配置指令3.5 应用示例1. CH9121T简介 CH9121 是一款网络串口透传芯片,自带 10/100M…

科研数据可视化核心技术:基于 AI 与 R 语言的热图、火山图及网络图绘制实践指南

在学术研究竞争日趋激烈的背景下,高质量的数据可视化已成为科研成果呈现与学术传播的关键要素。据统计,超过 60% 的学术稿件拒稿原因与图表质量存在直接关联,而传统绘图工具在处理组学数据、复杂关联数据时,普遍存在效率低下、规范…

Windows体验macOS完整指南

一、虚拟机安装macOS专业方案1. 环境准备阶段硬件检测:进入BIOS(开机时按Del/F2键)确认开启VT-x/AMD-V虚拟化选项建议配置:i5十代以上CPU/16GB内存/256GB SSD软件准备:官网下载VMware Workstation 17 Pro获取Unlocker补…

【普及/提高−】洛谷P1577 ——切绳子

见:P1577 切绳子 - 洛谷 题目描述 有 N 条绳子,它们的长度分别为 Li​。如果从它们中切割出 K 条长度相同的绳子,这 K 条绳子每条最长能有多长?答案保留到小数点后 2 位(直接舍掉 2 位后的小数)。 输入格式 第一行两个整数 N …

imx6ull-裸机学习实验16——I2C 实验

目录 前言 I2C简介 基本特性​​ I2C 协议 起始位 停止位 数据传输 应答信号 I2C 写时序 I2C 读时序 I.MX6U I2C 简介 寄存器 地址寄存器I2Cx_IADR(x1~4) 分频寄存器I2Cx_IFDR 控制寄存器I2Cx_I2CR 状态寄存器I2Cx_I2SR 数据寄存器I2Cx_I2DR AP3216C 简介 …

【TCP/IP】5. IP 协议

5. IP 协议5. IP 协议5.1 概述5.2 IP 数据报格式5.3 无连接数据报传输5.3.1 首部校验5.3.2 数据分片与重组5.4 IP 数据报选项5.4.1 选项格式5.4.2 选项类型5.5 IP 模块的结构本章要点5. IP 协议 5.1 概述 IP 协议是 TCP/IP 协议簇的核心协议,位于网络层&#xff0…

Linux 服务器挖矿病毒深度处理与防护指南

在 Linux 服务器运维中,挖矿病毒是常见且危害较大的安全威胁。此类病毒通常会隐蔽占用大量 CPU 资源进行加密货币挖矿,导致服务器性能骤降、能耗激增,甚至被黑客远程控制。本文将从病毒特征识别、应急处理流程、深度防护措施三个维度&#xf…

MySQL数据表设计 系统的营销功能 优惠券、客户使用优惠券的设计

系统的营销功能营销功能概述:系统的营销功能主要是:市场活动管理、营销自动化、销售线索管理以及数据分析和报告等。‌ToC‌(Consumer):面向个人消费者,满足日常消费需求。‌优惠券的种类:ToC的…

让 3 个线程串行的几种方式

1、通过join()的方式 子线程调用join()的时候,主线程等待子线程执行完再执行。如果让多个线程顺序执行的话,那么需要他们按顺序调用start()。/*** - 第一个迭代(i0):* 启动线程t1 -> 然后调用t1.join()。* …

在 Vue 项目中关闭 ESLint 规则

在 Vue 2 项目中关闭 ESLint 规则有以下几种方法,根据您的需求选择合适的方式: 1. 完全禁用 ESLint 修改 vue.config.js(推荐) module.exports {// 关闭 ESLintlintOnSave: false }或修改 package.json {"scripts": {&…

电脑息屏工具,一键黑屏超方便

软件介绍 今天为大家推荐一款实用的PC端屏幕管理工具——CloseDsp。这款"息屏小能手"能一键关闭显示器,解决各种场景下的屏幕管理需求。 核心功能 CloseDsp最突出的特点是能瞬间关闭显示器屏幕。只需点击"关闭显示器"按钮,屏幕…

嵌入式调试LOG日志输出(以STM32为例)

引言在嵌入式系统开发中,调试是贯穿整个生命周期的关键环节。与传统PC端程序不同,嵌入式设备资源受限(如内存、存储、处理器性能),且运行环境复杂(无显示器、键盘),传统的断点调试或…

Zephyr的设备驱动模型

默认配置默认配置 boards/arm/nucleo_f401re/ ├── nucleo_f401re.dts ← 板卡设备树主入口 ├── nucleo_f401re_defconfig ← 默认 Kconfig 配置 ├── board.cmake ← CMake 构建入口overlay1.新增加驱动需要修改对应板的设备树文件&#xf…

Mysql字段没有索引,通过where x = 3 for update是使用什么级别的锁

没有索引时,FOR UPDATE 会锁住整个表 现在,你正在一本一本地翻看所有书,寻找“维修中”的书,并且你对管理员说:“在我清点和修改完之前,别人不能动这些书,也不能往这个范围里加新书!…

TCP-与-UDP-协议详解:原理、区别与应用场景全解析

TCP 与 UDP 协议详解:原理、区别与应用场景全解析 在日常使用网络的过程中,我们经常听到 TCP 和 UDP 这两个词。你打开网页、发送消息、观看视频,背后都在使用 TCP 或 UDP 进行数据传输。那么这两个协议到底是怎么工作的?它们之间…

GitHub信息收集

目录 简介 一、入门搜索技巧 1. 基本关键词搜索 2. 文件类型限定搜索 3. 用户/组织定向搜索 二、精准定位技巧 1. 组合搜索条件 2. 排除干扰结果 3. 路径限定搜索 三、防御建议 四、法律与道德提醒 简介 GitHub作为全球最大的代码托管平台,存储着数十亿…

由 DB_FILES 参数导致的 dg 服务器无法同步问题

由 DB_FILES 参数导致的 dg 服务器无法同步问题 用户反映,dg 服务器数据从昨晚(7月8日)开始停止同步。 连接服务器发现没有 mrp 进程,并且 OPEN_MODE 参数也不正确。具体情况如下所示: SQL> select process, status…

Go语言泛型-泛型对代码结构的优化

在Go语言中,Go泛型-泛型对代码结构的优化部分主要探讨了泛型如何帮助我们优化代码结构、减少重复代码,并提高代码的可维护性、可读性和复用性。以下是详细内容: 一、引言 Go 1.18 引入了泛型,极大地提高了语言的灵活性。泛型使得我们可以编写更加通用、可复用且类型安全的…

【1-快速上手】

文章目录前言简介什么是 Konva?安装 Konva概述它是如何工作的?基本形状样式事件拖放滤镜动画选择器序列化与反序列化性能前言 结合项目实际业务需求,在 Fabric、Konva 等图形化框架中,我选择了性能表现好的 Konva。首先去学习官方…

【LeetCode】209. 长度最小的子数组(前缀和 + 二分)

【LeetCode】209. 长度最小的子数组(前缀和 二分)题目描述前缀和二分优化前缀和总结二分总结题目描述 题目链接:【LeetCode】209. 长度最小的子数组(前缀和 二分) 给定一个含有 n 个整数的数组和一个整数 target。…