消息中间件的组成:
Broker:消息服务器,作为server提供消息,核心服务
Producer:
Consumer:
Topic:主题,发布订阅模式下消息统一汇集地,不同生产者向topic发送消息,由MQ服务器分发到不同的订阅者,实现消息的广播
queue:队列,PTP模式下,特定生产者向特定queue发送消息,消费者订阅特定的queue完成指定消息的接收
message:消息体
消息中间件模式分类
PTP点对点
发布/订阅
消息中间件应用场景
异步通信
生产者将消息放进队列中,消费者不立即消费,过段时间消费
解耦
降低工程间的依赖程度
冗余
有些情况下处理数据会失败,消息队列对消息进行持久化,直到消息被完全消费
扩展性
可以扩展入队和处理的频率,只需要另外增加处理过程就可以。不需要改代码调参数,便于扩容
过载保护
当访问量剧增,消息队列可以帮助系统抗压,不至于过多的资源在系统中处于等待状态
可恢复性
即使消费服务挂了,消费失败的消息仍然可以恢复,继续被消费
顺序保证
按照顺序处理
缓冲
有助于控制和优化数据流经过系统的速度。以调节系统响应时间。
数据流处理
分布式系统产生的海量数据流,通过消息队列完成此类数据收集是最好的选择。
消息中间件常用协议
AMQP协议(高级消息队列协议)
高级消息队列协议模型定义:涵盖了Broker服务中用于路由和存储消息的组件,以及把这些组件连在一起
一个网络层协议AMQP能够让客户端程序与实现了AMQ Model的服务端进行通信
AMQP协议像是把一个一个东西连在一起 其设计目标:让服务端可通过协议编程
AMQP是一个二进制协议:特性有:多通道,异步,安全,便携,语言中立,高效,
该协议主要分两层:功能层:定义了一系列的命令;传输层:携带了从应用到服务端的方法,用于处理多路复用,分帧,编码,心跳,错误处理