用例
这是Apache Kafka®的一些流行用例的描述,有关这些领域的一些概况,请参阅这个博客。
消息传递
Kafka可以很好地替代更传统的消息代理,消息代理的使用有多种原因(从数据生产者分离处理、缓冲未处理的消息等),与大多数消息传递系统相比,Kafka具有更好的吞吐量、内置的分区、复制和容错能力,这使它成为大型消息处理应用程序的良好解决方案。
在我们的经验中,消息传递使用的吞吐量通常相对较低,但可能需要较低的端到端延迟,并且通常依赖于Kafka提供的强大的持久性保证。
在这个领域,Kafka可以与传统的消息系统(如ActiveMQ或RabbitMQ)相媲美。
网站活动追踪
Kafka最初的用例是能够将用户活动跟踪管道重建为一组实时发布订阅源,这意味着站点活动(页面视图、搜索或用户可能采取的其他操作)被发布到中心主题,每个活动类型有一个主题,这些源可用于订阅一系列用例,包括实时处理、实时监视和加载到Hadoop或离线数据仓库系统中,以便离线处理和报告。
活动跟踪通常是非常高的量,因为每个用户页面视图都会生成许多活动消息。
指标
Kafka通常用于操作监控数据,这包括从分布式应用程序收集统计数据,以生产操作数据的集中提要。
日志聚合
许多人使用Kafka作为日志聚合解决方案的替代。日志聚合通常从服务器收集物理日志文件,并将它们放在中央位置(可能是文件服务器或HDFS)进行处理,Kafka将文件的细节抽象出来,并将日志或事件数据抽象为消息流,这允许更低的延迟处理,更容易支持多个数据源和分布式数据消费,与像Scribe或Flume这样的以日志为中心的系统相比,Kafka同样具有良好的性能、更强的持久性保证,并且可以大大降低端到端延迟。
流处理
许多Kafka用户处理在由多个阶段组成的处理管道中的数据,从Kafka主题中使用原始输入数据,然后聚合、充实或以其他方式转换为新的主题,以便进一步消费或后续处理。例如,推荐新闻文章的处理管道可以从RSS提要中抓取文章内容并将其发布到“articles”主题;进一步的处理可能对内容规范化或去重,并将清理后的文章内容发布到新主题;最后的处理阶段可能尝试向用户推荐此内容。这种处理管道基于各个主题创建实时数据流图,从0.10.0.0开始,Apache Kafka中有一个轻量级但功能强大的流处理库,名为Kafka Streams,用于执行如上所述的数据处理,除了Kafka Streams之外,其他开源流处理工具还包括Apache Storm和Apache Samza。
Event Sourcing
Event Sourcing是一种应用程序设计风格,其中状态变化被记录为时间顺序的记录序列,Kafka对非常大的存储日志数据的支持,使它成为构建这种风格的应用程序的极佳后端。
提交日志
Kafka可以作为分布式系统的一种外部提交日志,日志帮助在节点之间复制数据,并作为失败节点恢复数据的重新同步机制,Kafka中的日志压缩特性有助于支持这种用法,在这个用法中,Kafka类似于Apache BookKeeper项目。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。