Kafka 是什么?

Kafka 是一个开源的分布式事件流处理平台。 它最初由 LinkedIn 开发,后来捐赠给了 Apache 软件基金会,并用 Java 和 Scala 编写。 Kafka 的设计目标是为处理实时数据流提供一个统一的、高吞吐量、低延迟的平台。

从本质上讲,可以将 Kafka 理解为一个高度可靠且可扩展的"日志"或"记录簿",用于记录在不同系统和应用程序之间发生的"事件"。

Kafka 的核心能力

Kafka 主要具备三大核心能力:

  1. 发布和订阅事件流: 它允许应用程序发布(写入)和订阅(读取)事件流。
  2. 持久化和可靠的存储: Kafka 以容错和持久的方式准确地按顺序存储记录。 我们可以理解为数据是可靠的,即使在系统出现故障时也不会丢失。
  3. 实时处理事件流: Kafka 允许在事件发生时对其进行实时处理。

Kafka 是如何工作的?

Kafka 的架构围绕几个关键概念构建:

  • 事件 (Event): 事件是 Kafka 中最基本的数据单元,记录了发生过的事情。 例如,一次用户点击、一个支付订单或者来自传感器的读数都可以是一个事件。
  • 主题 (Topic): 主题是事件的逻辑分组或类别。 你可以把它想象成数据库中的一张表或者文件系统中的一个文件夹。生产者将事件发布到特定的主题,消费者则订阅这些主题来读取事件。
  • 生产者 (Producer): 生产者是创建并向 Kafka 主题发布事件的应用程序。
  • 消费者 (Consumer): 消费者是从 Kafka 主题订阅并处理事件的应用程序。
  • Broker: Kafka 集群由一个或多个服务器组成,这些服务器被称为 Broker。 Broker 负责接收来自生产者的消息,为消息分配偏移量,并将消息持久化到磁盘上。
  • 分区 (Partition): 为了实现可伸缩性,一个主题可以被分成多个分区。 分区允许数据在多个 Broker 上进行水平扩展,从而实现更高的并行处理能力。
  • 消费者组 (Consumer Group): 多个消费者可以组成一个消费者组来共同消费一个主题。主题中的每个分区只能由组内的一个消费者来消费,这确保了消息被并行处理,提高了消费能力。

Kafka 与传统消息队列的区别

虽然 Kafka 可以像传统的消息队列(如 RabbitMQ 或 ActiveMQ)一样用于系统解耦和异步通信,但它们之间存在一些关键区别:

特性 Kafka 传统消息队列 (如 RabbitMQ)
模型 基于拉取 (Pull-based),消费者主动从 Broker 拉取数据。 通常基于推送 (Push-based),Broker 将消息推送给消费者。
消息保留 消息在消费后仍会持久化在主题中,可以被多个消费者或应用程序重复消费。 消息在被消费并确认后通常会被删除。
吞吐量 设计用于高吞吐量的场景,能够处理每秒数百万条消息。 吞吐量相对较低。
可伸缩性 通过分区机制实现出色的水平扩展能力。 扩展性相对有限。
适用场景 实时流处理、日志聚合、网站活动跟踪、大规模数据管道。 任务队列、后台作业处理、简单的事件分发。

Kafka 的主要应用场景

凭借其高性能和可扩展性,Kafka 被广泛应用于各种场景,超过 80% 的财富 500 强公司都在使用它。 常见的应用场景包括:

  • 实时数据管道: 在不同系统之间可靠地传输数据。
  • 流处理和实时分析: 与 Flink、Spark 等流处理框架集成,进行实时的数据分析和洞察。
  • 网站活动跟踪: 收集和分析用户行为数据,如页面浏览、点击和搜索。
  • 日志聚合: 从分布式系统中收集、处理和存储日志数据。
  • 指标和监控: 聚合来自分布式应用程序的指标,用于实时监控和警报。
  • 金融领域: 用于实时欺诈检测和处理市场数据。
  • 物联网 (IoT): 接收和处理来自大量物联网设备和传感器的数据。

总而言之,Kafka 不仅仅是一个消息队列,它更是一个功能强大的分布式事件流平台,为构建数据驱动的实时应用程序提供了坚实的基础。

相关推荐
向夏威夷 梦断明暄8 小时前
从架构特点到功能缺陷,重新认识分析型分布式数据库
数据库·分布式·架构
Wang's Blog9 小时前
Go-Zero 项目开发19:基于 Kafka 的异步消息存储与转发实战
golang·kafka
Devin~Y10 小时前
互联网大厂 Java 面试实录:Spring Boot、MyBatis、Redis、Kafka、Spring Security、RAG 与 MCP 全链路问答
java·redis·kafka·mybatis·spring security·spring mvc·sprint boot
AAA@峥11 小时前
Ceph 集群配置管理完整指南
运维·数据库·分布式·ceph
心如鉄补11 小时前
分布式链路追踪系统之docker-compose安装skywalking
分布式·docker·skywalking
努力努力再努力wz11 小时前
【分布式系统与 RPC 框架系列】从单机瓶颈到远程调用:一文理解分布式架构与 RPC 原理
linux·网络·c++·分布式·网络协议·rpc·架构
ACP广源盛1392462567313 小时前
此芯 P1 AI BOX / AI NAS@ACP#IX8008、IX8024 应用场景与市场机会
大数据·人工智能·分布式·单片机·嵌入式硬件
网络工程小王1 天前
【HCIE-AI】12.deepspeed分布式并行训练进阶版
人工智能·pytorch·分布式·学习·昇腾·deepspeed
ACP广源盛139246256731 天前
国产算力互联IX8024@ACP#Kimi K3 开源后的端侧部署硬件架构分析
大数据·人工智能·分布式·单片机·嵌入式硬件
花生了什么事o1 天前
分布式 ID 生成方案:从数据库自增到雪花算法
数据库·分布式·算法