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

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 不仅仅是一个消息队列,它更是一个功能强大的分布式事件流平台,为构建数据驱动的实时应用程序提供了坚实的基础。

http://www.xdnf.cn/news/1236043.html

相关文章:

  • 《汇编语言:基于X86处理器》第11章 MS-Windows编程(3)
  • 【stm32】按键控制LED以及光敏传感器控制蜂鸣器
  • OSPF知识点整理
  • 实战《从0开始使用SwiftUI搭建记账软件》- 2、SwiftUI 知识点详解与使用场景
  • 6.1、Redis多级缓存原理和优化、Redis部分参数优化调整
  • 【超分辨率专题】PiSA-SR:单步Diff超分新突破,即快又好,还能在线调参
  • Linux 摄像头实时抓取:V4L2、FFmpeg 与 GStreamer 全面讲解
  • python工具方法51 视频数据的扩充(翻转、resize、crop、re_fps)
  • Transformer模型用于MT信号相关性预测与分析
  • 《深入浅出RabbitMQ:从零基础到面试通关》
  • 渗透作业4
  • wordpress登陆前登陆后显示不同的顶部菜单
  • 数据结构代码
  • 08.Redis 持久化
  • AOP动态代理
  • #C语言——刷题攻略:牛客编程入门训练(四):运算
  • 大屏项目展示
  • 面向智能体的上下文工程:策略、实现与 LangGraph 实践
  • 09.Redis 常用命令
  • STM32-ESP8266通过MQTT与阿里云通讯
  • Coze 打通飞书多维表格,实现数据增删改查操作实战详解
  • Java线程安全类设计思路总结
  • kafka 是一个怎样的系统?是消息队列(MQ)还是一个分布式流处理平台?
  • RabbitMQ死信队列与消息幂等性实践指南
  • Rust:如何访问 *.ini 配置文件?
  • 关于车位引导及汽车乘梯解决方案的专业性、系统性、可落地性强的综合设计方案与技术实现说明,旨在为现代智慧停车楼提供高效、安全、智能的停车体验。
  • Noob靶场练习
  • 【python实用小脚本-169】『Python』所见即所得 Markdown 编辑器:写完即出网页预览——告别“写完→保存→刷新”三连
  • Rustdesk中继服务器搭建(windows 服务器)
  • SQL注入SQLi-LABS 靶场less31-38详细通关攻略