← 返回首页
什么是Kafka
发表时间:2023-10-27 01:50:05
什么是Kafka

Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一个高吞吐量的、持久性的、分布式的发布订阅消息系统。

1.消息队列

消息队列大致可以分为两种:点对点(P2P)、发布订阅(Pub/Sub)。

共同点: 针对数据的处理流程是一样的 消息生产者生产消息发送到queue中,然后消息消费者从queue中读取并且消费消息。

不同点: 点对点(p2p)模型包含:消息队列(Queue)、发送者(Sender)、接收者(Receiver) 一个生产者生产的消息只有一个消费者(Consumer)(消息一旦被消费,就不在消息队列中)消费。例如QQ中的私聊,我发给你的消息只有你能看到,别人是看不到的。

发布订阅(Pub/Sub)模型包含:消息队列(Queue)、主题(Topic)、发布者(Publisher)、订阅者(Subscriber),每个消息可以有多个消费者,彼此互不影响。比如我发布一个微博:关注我的人都能够看到,或者QQ中的群聊,我在群里面发一条消息,群里面所有人都能看到。Kafka消息队列是属于发布订阅模型。

常见的消息队列产品有哪些呢?

目前企业中比较常见的消息队列产品主要有kafka、ActiveMQ、RabbitMQ、RocketMQ等; 在大数据场景主要采用kafka作为消息队列,在JaveEE开发中主要采用ActiveMQ、RabbitMQ、RocketMQ。

2.什么是Kafka

Kafka是一个高吞吐量的、持久性的、分布式发布订阅消息系统。

高吞吐量:可以满足每秒百万级别消息的生产和消费。为什么这么快?难道Kafka的数据是放在内存里面的吗? 不是的,Kafka的数据还是放在磁盘里面的。主要是Kafka利用了磁盘顺序读写速度超过内存随机读写速度这个特性。所以说它的吞吐量才这么高。

持久性:有一套完善的消息存储机制,确保数据高效安全的持久化。 分布式:它是基于分布式的扩展、和容错机制;Kafka的数据都会复制到几台服务器上。当某一台机器故障失效时,生产者和消费者切换使用其它的机器。

Kafka的数据时存储是磁盘中的,为什么可以满足每秒百万级别消息的生产和消费? 这是一个面试题,其实就是我们刚才针对高吞吐量的解释:kafka利用了磁盘顺序读写速度超过内存随机读写速度这个特性。

Kafka主要应用在实时计算领域,可以和Flume、Spark、Flink等框架结合使用。

3.Kafka组件介绍

我们看一下Kafka中的组件,加深对kafka的理解。

在这里总结一下: Broker>Topic>Partition>Message