根据官方文档给出的说明,Kafka 可以用于以下几种场景中:

消息处理

Kafka可用于代替传统的消息代理。 消息代理被使用在很多场景下(用于将处理与数据生成器分离,缓冲未处理的消息等)。 与大多数消息传输系统相比,Kafka具有更好的吞吐量,内置分区,冗余和容错功能,另其成为大规模消息处理程序的良好解决方案。消息系统一般吞吐量相对较低,但是需要更小的端到端延时,并尝尝依赖于Kafka提供的强大的持久性保障。在这个领域,Kafka足以媲美传统消息系统,如ActiveMRRabbitMQ

网站用户行为跟踪

Kafka 支持将用户行为信息构建成一组实时发布的订阅源。这代表网站上操作(网页浏览量,搜索或用户的其他操作)都能发布到对应的Topic中。这些结果被订阅者拿到后可用于,实时处理,实时监控,或存储到Hadoop/离线数据仓库中

Metrics

Kafka 通常会被用于数据监控,聚合来自分布式应用程序的统计信息,整合并输出操作数据信息。经常被用来做实时系统监控。

Log Aggregation

许多人使用Kafka替换日志聚合解决方案。 日志聚合通常从服务器收集物理日志文件,并将它们放在中央位置(文件服务器或HDFS可能)进行处理。 Kafka提取文件的详细信息,并将日志或事件数据更清晰地抽象为消息流。然而Kafka忽略掉文件的细节,将其更清晰地抽象成一个个日志或事件的消息流。这就让Kafka处理过程延迟更低,更容易支持多数据源和分布式数据处理。比起以日志为中心的系统比如Scribe或者Flume来说,Kafka提供同样高效的性能和因为复制导致的更高的耐用性保证,以及更低的端到端延迟。

Stream Processing

Kafka 的许多用户会分多个阶段处理数据,其中原始输入数据从Kafka获得,然后再聚合或以其他方式转换为新主题再放入Kafka中,以供进一步消费或后续处理。 例如,用于推荐新闻文章的处理管道可以从RSS订阅源爬取文章内容并将其发布到“文章”主题; 进一步处理可以规范化或去重复该内容并且将经过清洗的文章内容发布到新主题; 最终处理阶段可能会尝试向用户推荐此内容。 这样的处理流水线基于各个主题创建实时数据流的图形。 从0.10.0.0开始,在Apache Kafka中提供了一个称为Kafka Streams的轻量但强大的流处理库,以执行如上所述的这种数据处理。用 Kafka Streams,可以替代开源流处理工具包括Apache Storm和Apache Samza。

 

Event Sourcing

事件机制本来是一种程序设计模式,其中状态更改记录需要以时间排序。Kafka本身具有很好的大数据存储管理机制,使用Kafka可以轻松构建这种类型的应用程序

 

Commit Log

Kafka可以为一种外部的持久性日志的分布式系统提供服务, 这种日志有助于在节点之间备份数据,并作为故障节点数据恢复提供一种同步机制。 Kafka中的日志压缩功能为这种用法提供了条件。 这个用法类似于Apache BookKeeper项目。