Kafka:
是消息队列(消息中间站),应用于实时处理领域,是基于发布/订阅模式。
消息队列的两种模式:
(1) 点对点模式 : 一个消息只有一个消费者。消费者主动拉去数据,消费完之后消息会被清除。 一对一 。
(2) 发布/订阅模式 :一个消息会有多个消费者,消费者消费完消息之后,消息不会被清除。 一对多 。
发布/订阅模式下消息有两种消费方式:
1 . 消费者主动拉取消息,Kafka采用的是这种模式
2. 生产者主动推送消息(比如公众号消息一样)但是这样有 一个问题,由于各个消费者消费速度不一样,生产者统一主动发送数据给消费者的话会让其中一些(速度慢的)崩溃。
所以Kafka采取的是消费者自己主动拉取数据。
使用消息队列的好处:
(1)解耦:两边传输消息时不需要保证两边同时在线,允许独立的扩展或修改两边的处理过程。(两种运动分离开来处理。)
(2)可恢复性:系统的一部分组件失效时,不会影响到整个系统。消息队列降低了进程间的耦合度。所以即使一个处理消息的进程挂掉了,加入队列中的消息仍然可以在系统恢复后被处理。
(3)缓冲:有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况。(有削峰的功能,高峰期免于系统崩溃。)
(4)灵活性,峰值处理能力:分布式可以动态增加节点。
(5)异步通讯。(解耦,不需要同时在线。)