使用 Apache Kafka 进行实时流处理

Apache Kafka 是一个开源分布式流处理平台,最初由 LinkedIn 开发,后来于 2011 年捐赠给 Apache。

我们可以将 Kafka 描述为一个文件集合,其中充满了分布在多台机器上的消息。大多数 Kafka 类比都围绕着将这些不同的单独日志捆绑在一起、将消息从生产者可靠地路由到消费者、进行复制以实现容错以及优雅地处理故障。其架构更多地继承了 HDFS、HBase 或 Cassandra 等存储系统,而不是实现 JMS 或 AMQP 的传统消息传递系统。底层抽象是分区日志,本质上是一组分布在多台机器上的仅附加文件。这鼓励顺序访问模式。Kafka 集群是一个分布式系统,它将数据分布在许多机器上,以实现容错和线性扩展。

Kafka 已经从一个消息系统迅速发展成为一个成熟的流媒体平台,具有以下属性:

可扩展。

容错。

发布-订阅消息系统。

与大多数消息传递系统相比,吞吐量更高。

Kafka 作为流媒体平台的功能

  1. 发布和订阅记录流

我们已经拥有许多消息传递系统。为什么我们还需要一个?Kafka 的核心是不起眼的、不可变的提交日志,您可以从那里订阅它,并将数据发布到任意数量的系统或实时应用程序。与消息队列不同,Kafka 是一个高度可扩展、容错的分布式系统。

Kafka 比传统消息系统具有更强的排序保证。传统队列在服务器上按顺序保留记录,如果多个消费者从队列中消费,服务器将按照记录的存储顺序分发记录。然而,虽然服务器按顺序分发记录,但记录是异步传递给消费者的,因此它们可能会乱序到达不同的消费者。

卡夫卡更有效地做到这一点。Kafka 可以在消费者进程池上提供排序保证和负载平衡

  1. 以容错持久的方式存储记录流

在 Kafka 中,数据通过数据复制以容错方式写入磁盘。Kafka 允许生产者等待确认完成,并且只有在完全复制并保证写入的服务器失败时才认为写入完成。无论服务器上有 50 KB 还是 50 TB 的持久数据,Kafka 都会执行相同的操作。因此,我们可以将Kafka视为一种专用于高性能、低延迟提交日志存储、复制和传播的特殊用途分布式文件系统。

  1. 在记录流出现时对其进行处理

如果没有在数据到达时对其进行操作的能力,流媒体平台将是不完整的。Apache Kafka 中的 Streams API 是一个功能强大的轻量级库,允许即时处理。

在 Kafka 中,流处理器是从输入主题获取连续数据流、对此输入执行某些处理并生成输出主题的连续数据流的任何东西。

例如,零售应用程序可能会获取销售和发货的输入流,并输出根据该数据计算出的再订购和价格调整流。

可以直接使用生产者和消费者 API 来完成简单的处理。对于更复杂的转换,Kafka 提供了完全集成的 Streams API。

Apache Kafka 中的概念

Kafka 作为集群运行在一台或多台可以跨越多个数据中心的服务器上。

Kafka 集群将记录流存储在称为主题的类别中。

每条记录由一个键、一个值和一个时间戳组成。

Kafka用例

Kafka 用于两大类应用程序。它可以构建实时流数据管道,在系统和应用程序之间可靠地移动数据。它还可用于构建实时流应用程序,对OD数据流进行转换或做出反应。

这些的一些用例包括:

消息传递。

实时网站活动跟踪。

指标。

日志聚合。

流处理。

事件溯源。

提交日志。

在本系列的这一部分中,我们介绍了 Apache Kafka 及其基本功能。在第二部分中,我们将介绍Kafka的API。

相关推荐
文慧的科技江湖1 小时前
2026年10月4日充电桩行业晚报:当“只充80%“成为通行规则,行业开始管单车占桩时长 | 慧知开源充电桩平台
开源·apache·新能源·虚拟电厂·充电桩·ocpp·v2g
Flynt13 小时前
Redis Cluster主节点挂了,为什么"高可用"还全员掉线?我把三次kill的记录翻出来了
数据库·redis·分布式
JosieBook15 小时前
【数据库】MySQL 实战精通系列 · 第10篇:分库分表与分布式事务实战
数据库·分布式·mysql
梦帮科技18 小时前
vLLM / TensorRT-LLM 极限推理:PagedAttention 细粒度物理页表管理与连续批处理(Continuous Batching)实战
数据结构·人工智能·分布式·python·深度学习·算法·vllm
用户14944848132020 小时前
同为消息队列,RocketMQ 和 Kafka 的底层设计差在哪?
kafka
Frank_refuel1 天前
分布式RPC框架实战(二):服务端模块划分与底层设计
分布式·网络协议·rpc
开开心心就好1 天前
办公软件卸载不干净?专用工具一键清残留
java·前端·人工智能·智能手机·kafka·excel·memcache
mftang2 天前
EtherCAT协议:从“飞读飞写”机制到分布式时钟同步的实时以太网架构深度解析
分布式·架构·ethercat·分布式时钟·从站控制器
ShineWinsu2 天前
对于Redis:Hash类型的解析
c++·redis·分布式·缓存·面试·hash·哈希表
东方芷兰2 天前
Agent 技术摘要 03 —— 基座模型、推理模型、Flash、联邦学习、分布式机器学习
人工智能·分布式·机器学习