1、Kafka 是什么?主要应用场景有哪些?
Kafka 是一个分布式流式处理平台。
流平台具有三个关键功能:
? 消息队列:发布和订阅消息流,这个功能类似于消息队列,这也是 Kafka
也被归类为消息队列的原因。
容错的持久方式存储记录消息流:Kafka 会把消息持久化到磁盘,有效避
免了消息丢失的风险。
? 流式处理平台:在消息发布的时候进行处理,Kafka 提供了一个完整的流
式处理类库。
Kafka 主要有两大应用场景:
? 消息队列:建立实时流数据管道,以可靠地在系统或应用程序之间获取数
据。
? 数据处理:构建实时的流数据处理程序来转换或处理数据流。
2、和其他消息队列相比,Kafka 的优势在哪里?
我们现在经常提到 Kafka 的时候就已经默认它是一个非常优秀的消息队列了,
我们也会经常拿它跟 RocketMQ、RabbitMQ 对比。我觉得 Kafka 相比其他消息
队列主要的优势如下:
? 极致的性能 :基于 Scala 和 Java 语言开发,设计中大量使用了批量处
理和异步的思想,最高可以每秒处理千万级别的消息。
? 生态系统兼容性无可匹敌 :Kafka 与周边生态系统的兼容性是最好的没
有之一,尤其在大数据和流计算领域。
实际上在早期的时候 Kafka 并不是一个合格的消息队列,早期的 Kafka 在消
息队列领域就像是一个衣衫褴褛的孩子一样,功能不完备并且有一些小问题比
如丢失消息、不保证消息可靠性等等。当然,这也和 LinkedIn 最早开发
Kafka 用于处理海量的日志有很大关系,哈哈哈,人家本来最开始就不是为了
作为消息队列滴,谁知道后面误打误撞在消息队列领域占据了一席之地。
3、什么是 Producer、Consumer、Broker、Topic、
Partition?
Kafka 将生产者发布的消息发送到 Topic(主题) 中,需要这些消息的消费
者可以订阅这些 Topic(主题)。Kafka 比较重要的几个概念:
? Producer(生产者) : 产生消息的一方。
? Consumer(消费者) : 消费消息的一方。
? Broker(代理) : 可以看作是一个独立的 Kafka 实例。多个 Kafka
Broker 组成一个 Kafka Cluster。
? Topic(主题) : Producer 将消息发送到特定的主题,Consumer 通过订
阅特定的 Topic(主题)