大数据采集与处理
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2.6 Kafka

Kafka最初由LinkedIn开发,被LinkedIn于2010年贡献给了Apache软件基金会,并成为顶级开源项目。Apache Kafka是分布式发布/订阅消息系统,其设计目标是通用的API(Application Programming Interface,应用程序接口)、消息持久化、高吞吐量、支持离线系统加载数据、低时延的消息系统[26-27]。Kafka目前是分布式系统中最流行的消息中间件之一,凭借着其高吞吐量的设计,在日志收集系统和消息系统的应用场景中深得开发者的喜爱[12]

Kafka优点如下。

(1)解决了百万条级别的数据中生产者和消费者之间数据传输的问题。

(2)Kafka提供的发布/订阅模式,可使消费者针对统一数据做不同的业务逻辑处理。

(3)Kafka实现了生产者和消费者之间的无缝对接,提供了系统之间的消息通信。

Kafka是一个开源的消息发布和订阅系统,主要用在以下场景中。

(1)持续的消息:为了从大数据中派生出有用的数据,任何数据的丢失都会影响生成的结果,Kafka提供了一个复杂度为O(1)的磁盘结构存储数据,即使是百万条级别的数据,也提供一个常量时间性能。

(2)高吞吐量:Kafka采用普通的硬件支持每秒百万条级别的吞吐量。

(3)分布式:明确支持消息的分区,通过Kafka服务器和消费者机器的集群分布式消费,维持每个分区是有序的。

(4)支持多种语言:Java、.net、PHP、Ruby、Python。

(5)实时性:消息被生成者线程生产就能马上被消费者线程消费,这种特性和事件驱动的系统是相似的。