https://mp.weixin.qq.com/s/-IPfWPS1WQMEgcIu0Ak2VQ
https://blog.csdn.net/qq_36918149/article/details/99656156
1.Kafka是什么?应用场景有哪些
Kafka是一个分布式流式处理平台,主要有三个关键功能。
- 消息队列:发布和订阅消息流。
- 容错的持久方式存储记录消息流:Kafka会把消息持久化到磁盘,有效避免了消息丢失的风险。
- 流式处理平台:在消息发布的时候进行处理,Kafka提供了一个完整的流式处理类库。
主要应用场景:
- 消息队列:建立实时数据管道,以可靠地在系统或应用程序之间获取数据。
- 数据处理:构建实时的流数据处理程序来转换或处理数据流
2.和其他消息队列相比,Kafka的优势在哪里?
主要优势:
- 极致的性能:基于Scala和Java语言开发,设计中大量使用了批量处理和异步的实现,最高可以每秒处理千万级的消息。
- 生态系统兼容性无可匹敌:Kafka与周边生态系统的兼容性是最好的没有之一,尤其是在大数据和流计算领域。
3.队列模型了解吗?Kafka的消息模型知道吗?
队列模型:早期的消息队列
使用队列(Queue)作为消息通信载体,满足生产者与消费者模式,一条消息只能被一个消费者使用,未被消费的消息在队列中保留直到被消费或超时。
比如:我们生产者发送100条消息的话,两个消费者来消费一般情况下两个消费者会按照消息发送的顺序各自消费一半。
队列模型存在的问题:
假如我们需要将消费者产生的消息分发给多个消费者,并且每个消费者都能接收到完整的消息内容。
这样情况下,队列模型就不好解决了。
发布-订阅模型:Kafka消息模型
发布订阅模型(Pub-Sub)使用主题(Topic)作为消息通信载体,类似于广播模式;发布者发布一条消息,该消息通过主题传递给所有的订阅者,在一条消息广播之后才订阅的用户则是收不到该条消息的。
在发布-订阅模型中,如果只有一个订阅者,那它和队列模型就基本是一样的了,所以锁,发布-订阅模型在功能层面上是可以兼容队列模型的。
Kafka采用的就是发布-订阅模型。
RocketMQ的消息模型和Kafka基本是完全一样的。唯一区别就是Kafka中没