Java高频面试题- 每日三连问?【Day33】 — Kafka篇(一)

2022-04-12 14:21:42 浏览数 (1)

问题导读

一、说说Kafka 是什么?主要应用场景有哪些?

二、和其他消息队列相比,Kafka 的优势在哪里?

三、什么是 Producer、Consumer、Broker、Topic、Partition?

01

说说Kafka 是什么?主要应用场景有哪些?

正经回答:

Kafka 是一个分布式流式处理平台。

流平台具有三个关键功能:

 消息队列:发布和订阅消息流,这个功能类似于消息队列,这也是 Kafka 也被归类为消

息队列的原因。

 容错的持久方式存储记录消息流:Kafka 会把消息持久化到磁盘,有效避免了消息丢失

的风险。

 流式处理平台:在消息发布的时候进行处理,Kafka 提供了一个完整的流式处理类库。

Kafka 主要有两大应用场景:

 消息队列 :建立实时流数据管道,以可靠地在系统或应用程序之间获取数据。

 数据处理:构建实时的流数据处理程序来转换或处理数据流。

分享朋友圈,记录学习每一天~

02

和其他消息队列相比,Kafka 的优势在哪里?

正经回答:

我们现在经常提到 Kafka 的时候就已经默认它是一个非常优秀的消息队列了,我们也会经常拿它跟 RocketMQ、RabbitMQ 对比。

Kafka 相比其他消息队列主要的优势如下:

 极致的性能 :基于 Scala 和 Java 语言开发,设计中大量使用了批量处理和异步的思想,最高可以每秒处理千万级别的消息。

 生态系统兼容性无可匹敌 :Kafka 与周边生态系统的兼容性是最好的没有之一,尤其在大数据和流计算领域。

实际上在早期的时候 Kafka 并不是一个合格的消息队列,早期的 Kafka 在消息队列领域功能不完备并且有一些小问题比如丢失消息、不保证消息可靠性等等。

当然,这也和 LinkedIn 最早开发 Kafka 用于处理海量的日志有很大关系,本来最开始就不是为了作为消息队列,谁知道后面误打误撞在消息队列领域占据了一席之地。

03

什么是 Producer、Consumer、Broker、Topic、Partition?

正经回答:

Kafka 将生产者发布的消息发送到 Topic(主题) 中,需要这些消息的消费者可以订阅这些 Topic(主题)。

Kafka 比较重要的几个概念:

 Producer(生产者) : 产生消息的一方。

 Consumer(消费者) : 消费消息的一方。

 Broker(代理) : 可以看作是一个独立的 Kafka 实例。多个 Kafka Broker 组成一个Kafka Cluster。

 Topic(主题) : Producer 将消息发送到特定的主题,Consumer 通过订阅特定的Topic(主题) 来消费消息。

 Partition(分区) : Partition 属于 Topic 的一部分。一个 Topic 可以有多个 Partition ,并且同一 Topic 下的 Partition 可以分布在不同的 Broker 上,这也就表明一个 Topic 可以横跨多个 Broker 。

- End -

0 人点赞