Kafka使用场景

消息队列

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项目。

你可能感兴趣的:(Kafka使用场景)