Kafka基础
Kafka定义
Kafka是一个分布式的基于发布/订阅模式的消息队列MQ(Message Queue)Kafka多用于对接Spark
- Message Queue
- 消息队列
- 传统应用场景
1. 同步处理
直接调用接口对业务进行调用 (流处理)
优点:速度快
缺点:不安全
2. 异步处理
将请求发送到MQ中等待 在没有得到反馈之前 先对请求做出响应 (批处理)
优点:
1. 解耦合
可以将程序之间分隔,易于去拓展 、优化、更改两边的处理过程 。
2.可恢复性
当系统的部分组件发生故障时,消息仍然在MQ中 在系统恢复后可以将消息恢复过来
3. 缓冲
可以控制和优化生产消费数据的速度,解决,生产消息和消费消息处理速度不一致的情况 生产>消费
4. 削峰
在面临访问量剧增的情况下,在生产数据达到一定数值时,将数据先存储到MQ中进行暂存
缺点:处理速度慢
消息队列的两种模式
- 点对点模式(一对一,消费者主动拉取数据,消息收到后消息清除)
- 生产者将数据生产数据发送到Queue(队列)中----->>>>由消费者从Queue中将数据拉取出来消费掉。
- Queue中的数据在消费后,不再存储。Queue支持多个消费者,但是对于一个消息而言,只有一个消费者进行分析
- 发布/订阅模式(一对多,消费者消费数据后数据不会清除)
两种模式
1. 发布模式是由生产者主动进行消息发布
2. 订阅模式是由消费者主动进行消息拉取 (缺点:当MQ中没有消息时,该模式还会进行不停的拉取 浪费资源)
优点:
- Queue会对消息队列中的数据进行保留 具体保留时间 根据自己的需求在配置文件中进行配置
- 是生产者主动推出的消息
- 生产者将消息发布到topic中,同时多个消费者消费这条信息,这个发送到topic中的消息会被所有的订阅者消费
缺点:
- 会将消费者不需要的消息推送过来
- 推送消息的时候 速度是由Queue来决定 , 不会估计下流消费者的消费速度,存在资源浪费
-