消息队列的两种模式:
1、点对点模式(一对一,消费者主动拉取数据,消息收到后消息清除):
点对点模型通常是一个基于拉取或者轮询的消息传送模型,这种模型从队列中请求信息,而不是将消息推从到客户端。这个模型的特点是发送到队列的消息被一个且只有一个接受者接受处理,即使有很多个消息监听者也是如此。
2、发布/订阅模式(一对多,数据产生后,推送给所有的订阅者)
发布订阅模型是一个基于推送消息的传送模型。发布订阅模型可以有多种不同的订阅者,临时订阅只在主动监听主题时才接收消息,而持久订阅者则监听所有的消息,即使当前订阅者不可用,处于离线状态。
为什么要用消息队列:
1、解耦
允许你独立的扩展和修改两边的处理过程,只要保证他们遵守同样的接口约束
2、冗余
消息队列 把数据进行持久化知道他们已经被完全处理,通过这一方式规避了丢失数据的风险,许多消息队列所采用的 “ 插入-获取-删除 ”范式中,再把一个消息从队列中删除之前,需要处理系明确指出该消息已经被处理完毕,从而保证你的数据安全的保存直到你使用完毕。
3、扩展性
因为消息队列解耦了你的处理过程,所以增大消息入队和处理的频率时很容易的。另外增加处理过程即可。
4、灵活性和峰值处理能力
5、可恢复性
6、顺序保证
7、缓冲
8、异步通信
什么是Kafka:
一个分布式消息队列。