Kafka介绍

概述

Kafka是一个分布式流平台(不只是消息系统),具备以下关键特性:

Kafka支持两类应用程序:

Kafka应用特性如下:

架构

Kafka依赖ZookeeperZookeeper负责维护Kafka的元数据(brokertopicpartition)等信息,实现Kafka的动态管理。如-1所示,Kafka架构主要由BrokerProducerConsumer以及Consumer Group组成。其中:

图-1 Kafka架构

 

应用场景

相比于传统的消息系统,Kafka具备更好的吞吐量、低延迟、分区、副本、容错等特性,有利于处理大规模的消息。

Kafka可以用来记录用户的各种活动,例如网页浏览、搜索等活动,这些活动被发布到Kafkatopic中,可用于实时监控处理、实时监测或加载到Hadoop或离线数据仓库中。

Kafka可以用于实时监控性能指标等数据。

日志聚合通常从服务器收集物理日志文件,并将它们放在日志收集中心(可以是文件服务器或HDFS)进行处理。Kafka抽象出文件的细节,将日志或事件数据更清晰地抽象为消息流,能够保证更低延迟的处理,也更容易支持多个生产者和消费者。

流处理通常包含多个阶段,可以通过Kafka进行中转。例如新闻推荐场景中,新闻内容可以从“articles”主题获取,经过进一步处理得到新内容后再推荐给用户。

分布式系统可以提交日志到Kafka,以帮助节点同步数据。