1.1 定义

Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。

1.2 消息队列

1.2.1 传统消息队列的应用场景

kafka leader节点数据丢失 kafka queue_kafka leader节点数据丢失


1.2.2 消息队列的两种模式

(1)点对点模式(一对一,消费者主动拉取数据,消息收到后消息清除)

消息生产者生产消息发送到Queue中,然后消息消费者从Queue中取出并且消费消息。消息被消费以后,queue中不再有存储,所以消息消费者不可能消费到已经被消费的消息。Queue支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费。

kafka leader节点数据丢失 kafka queue_数据_02


(2)发布/订阅模式(一对多,消费者消费数据之后不会清除消息)

消息生产者(发布)将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息。和点对点方式不同,发布到topic的消息会被所有订阅者消费。

kafka leader节点数据丢失 kafka queue_数据_03


1.3 Kafka简介

1.3.1 什么是Kafka ?

Kafka是一个分布式的数据流式传输平台。

在流式计算中,Kafka一般用来缓存数据,Spark通过消费Kafka的数据进行计算。

1)Apache Kafka是一个开源消息系统,由Scala写成。是由Apache软件基金会开发的一个开源消息系统项目。

2)Kafka最初是由LinkedIn公司开发,并于2011年初开源。2012年10月从Apache Incubator毕业。该项目的目标是为处理实时数据提供一个统一、高通量、低等待的平台。

3)Kafka是一个分布式消息队列。Kafka对消息保存时根据Topic进行归类,发送消息者称为Producer,消息接受者称为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)称为broker。

4)无论是kafka集群,还是consumer都依赖于zookeeper集群保存一些meta信息,来保证系统可用性。

1.3.2 Kafka的特点

作为一个数据流式传输平台,kafka有以下三大特点:

类似于消息队列和商业的消息系统,kafka提供对流式数据的发布和订阅

kafka提供一种持久的容错的方式存储流式数据

kafka拥有良好的性能,可以及时地处理流式数据

基于以上三种特点,kafka在以下两种应用之间流行:

①需要在多个应用和系统间提供高可靠的实时数据通道

②一些需要实时传输数据及及时计算的应用

此外,kafka还有以下特点:

Kafka主要集群方式运行在一个或多个可跨多个数据中心的服务器上

Kafka集群将数据按照类别记录存储,这种类别在kafka中称为主题

每条记录由一个键,一个值和一个时间戳组成