Kafka usecase



以下是对ApacheKafka®的一些常用用例的描述。有关这些领域的概述,请参阅此博客文章。

消息

kafka可以很好地替代传统的消息代理。各种原因都会使用到消息代理(将数据处理与数据生成器分离,缓冲未处理的消息等)。与大多数消息传递系统相比,Kafka具有更好的吞吐量,内置的分区,复制和容错能力,这使其成为大型消息处理应用的理想解决方案。

根据我们的经验,消息传递通常的吞吐量较低,但可能需要较低的端到端延迟,并且通常依赖于Kafka提供的强大的耐用性保证。

在这个领域,Kafka与传统的消息系统如ActiveMQ或RabbitMQ相当。

网站活动跟踪

Kafka的最初用例是能够将用户活动跟踪管道重建为一组实时发布-订阅源。 这意味着网站活动(用户可能采用的网页浏览量,搜索或其他操作)将发布到每个活动类型包含一个主题的中心主题。 这些订阅源可用于订阅各种用例,包括实时处理,实时监控以及加载到Hadoop或离线数据仓库系统以进行离线处理和报告等

由于许多活动消息是为每个用户页面视图生成的,因此活动跟踪通常量很大。

指标

kafka通常用于运营监控数据。这涉及从分布式应用程序汇总统计数据以生成操作数据的集中式提要

日志聚合

许多人使用Kafka作为日志聚合解决方案的替代品。日志聚合通常从服务器收集物理日志文件,并将它们置于中央位置(可能为文件服务器或HDFS)进行处理。Kafka提取文件的细节,并将日志或事件数据作为消息流进行更清晰的抽象。这样可以实现更低的延迟处理并且更轻松地支持多个数据源和分布式数据消费。与Scribe或Flume等以日志为中心的系统相比,Kafka提供同样出色的性能,由复制产生的更强大的持久性保证以及更低的端到端延迟。

流处理

Kafka的许多用户在处理管道中处理数据,这些数据由多个阶段组成,其中原始输入数据从Kafka主题中消费,然后汇总,丰富或以其他方式转换为新的主题以供进一步消费或后续处理。例如,推荐新闻文章的处理流水线可能会从RSS提要中抓取文章内容并将其发布到“文章”主题;进一步的处理可以对该内容进行标准化或去重,并将已清理的文章内容发布到新的主题;最终处理阶段可能会尝试向用户推荐此内容。这些处理管道基于各个主题创建实时数据流的图形。从0.10.0.0开始,在Apache Kafka中可以使用称为Kafka Streams的轻量但功能强大的流处理库来执行上述的数据处理。除了Kafka Streams,替代开源流处理工具还包括Apache Storm和Apache Samza

事件源

事件源是一种应用程序设计风格,其中状态更改以时间排序的记录序列进行记录。 Kafka对非常大的存储日志数据的支持使得它成为以这种风格构建的应用程序的优秀后端

提交日志

Kafka可以作为分布式系统的一种外部提交日志。该日志有助于在节点之间复制数据,并充当失败节点恢复其数据的重新同步机制。 Kafka中的日志压缩功能有助于支持这种用法。在这种用法中,Kafka与Apache BookKeeper项目类似。

猜你喜欢

转载自www.cnblogs.com/jiaoyiping/p/9165009.html