【Kafka】 用例
【Kafka】 用例
Metadata
title: 【Kafka】 用例
date: 2023-02-14 12:53
tags:
- 行动阶段/完成
- 主题场景/组件
- 笔记空间/KnowladgeSpace/ProgramSpace/ModuleSpace
- 细化主题/Module/Kafka
categories:
- Kafka
keywords:
- Kafka
description: 【Kafka】 用例
【Kafka】 用例
下面是Apache Kafka®的一些流行用例的描述。
Messaging | 消息
Kafka可以很好地替代更传统的消息代理。消息代理用于各种原因(将处理与数据生产者解耦,缓冲未处理的消息,等等)。与大多数消息系统相比,Kafka具有更好的吞吐量、内置的分区、复制和容错性,这使它成为大规模消息处理应用的良好解决方案。
根据我们的经验,消息传递的吞吐量通常比较低,但可能需要较低的端到端延迟,并且通常依赖于Kafka提供的强持久性保证。
在这方面,Kafka与传统的消息系统(如ActiveMQ或RabbitMQ)相当。
Website Activity Tracking | 网址活动跟踪
Kafka最初的用例是能够将用户活动跟踪管道重建为一组实时发布-订阅提要。这意味着网站活动(页面浏览量、搜索或用户可能采取的其他操作)被发布到中心主题,每个活动类型有一个主题。这些提要可用于订阅一系列用例,包括实时处理、实时监控以及加载到Hadoop或离线数据仓库系统中以进行离线处理和报告。
活动跟踪通常非常大,因为每个用户页面视图都会生成许多活动消息。
Metrics | 度量
Kafka通常用于操作监控数据。这涉及聚集来自分布式应用程序的统计信息,以生成集中的操作数据提要。
Log Aggregation | 日志收集
许多人使用Kafka作为日志聚合解决方案的替代品。日志聚合通常从服务器上收集物理日志文件,并将它们放在一个中心位置(可能是文件服务器或HDFS)进行处理。Kafka抽象了文件的细节,并将日志或事件数据抽象为消息流。这使得处理延迟更低,更容易支持多个数据源和分布式数据使用。与Scribe或Flume等以日志为中心的系统相比,Kafka提供了同样好的性能、更强的持久性(由于复制)以及更低的端到端延迟。
Stream Processing | 流处理
许多Kafka用户在由多个阶段组成的处理管道中处理数据,从Kafka主题中消费原始输入数据,然后聚合、丰富或转换为新的主题以进一步消费或后续处理。例如,推荐新闻文章的处理管道可能会从RSS提要中抓取文章内容,并将其发布到“articles”主题;进一步的处理可能会对该内容进行规范化或去重,并将清理后的文章内容发布到一个新主题;最后的处理阶段可能会尝试向用户推荐这些内容。这种处理管道基于单个主题创建实时数据流图。从0.10.0.0版本开始,Apache Kafka提供了一个轻量级但功能强大的流处理库Kafka Streams,用于执行上述数据处理。除了Kafka Streams,其他开源流处理工具还包括Apache Storm和Apache Samza。
Event Sourcing | 事件溯源
事件源是一种应用程序设计风格,其中状态更改被记录为按时间顺序排列的记录序列。Kafka对非常大的存储日志数据的支持使它成为这种风格的应用程序的绝佳后端。
Commit Log | 提交日志
Kafka可以作为分布式系统的一种外部提交日志。日志有助于在节点之间复制数据,并作为故障节点恢复数据的重新同步机制。Kafka中的日志压缩特性有助于支持这种用法。在这种用法中,Kafka类似于Apache BookKeeper项目。