kafka基本概念

目录大纲

什么是kafka

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

KAFKA + STORM +REDIS

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

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

Kafka是一个分布式消息队列:生产者、消费者的功能。它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。

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

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

JMS规范

JMS是Java提供的一套技术规范,用来异构系统 集成通信,缓解系统瓶颈,提高系统的伸缩性增强系统用户体验,使得系统模块化和组件化变得可行并更加灵活

适用场景: 生产消费者模式(生产者、服务器、消费者)

kfk_0f.jpg

JMS消息传输模型

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

点对点模型通常是一个基于拉取或者轮询的消息传送模型,这种模型从队列中请求信息,而不是将消息推送到客户端。这个模型的特点是发送到队列的消息被一个且只有一个接收者接收处理,即使有多个消息监听者也是如此。

2.发布/订阅模式(一对多,数据生产后,推送给所有订阅者)

发布订阅模型则是一个基于推送的消息传送模型。发布订阅模型可以有多种不同的订阅者,临时订阅者只在主动监听主题时才接收消息,而持久订阅者则监听主题的所有消息,即时当前订阅者不可用,处于离线状态。

kfk_1f.jpg

1
2
3

queue.put(object) #数据生产
queue.take(object) #数据消费

JMS核心组件

Destination:消息发送的目的地,也就是前面说的Queue和Topic。

Message:从字面上就可以看出是被发送的消息。

Producer: 消息的生产者,要发送一个消息,必须通过这个生产者来发送。

MessageConsumer: 与生产者相对应,这是消息的消费者或接收者,通过它来接收一个消息。

kfk_2f.jpg

通过与ConnectionFactory可以获得一个connection,通过connection可以获得一个session会话。

Kafka核心组件

Topic :消息根据Topic进行归类

Producer:发送消息者

Consumer:消息接受者

broker:每个kafka实例(server)

Zookeeper:依赖集群保存meta信息

kfk_3f.jpg