分布式消息中间件

什么是消息中间件?

1、高效可靠的消息传递机制进行数据交流;
2、利用数据通信来进行分布式集成
3、通过消息传递和排队(队列)模型,可以在分布式环境下进行进程中的通信

应用场景

1、跨系统数据传递
2、高并发流量消峰
3、数据异步处理等

常用消息中间件

1、ActiveMQ
2、rabbitMQ
3、kafka
4、RocketMQ

消息中间件本质

分布式消息中间件
数据接收、保存、发送等功能的网络应用。相当于一数据中转(分发)中心,性能一般都高于普通程序。
由5大核心组成:协议、持久化机制、消息分发机制、高可用设计、高可靠设计。

消息中间件常用协议

1、OpenWire :开放连接,activeMQ自己定义的一种协议,activeMQ的默认连接格式,它提供一种高效率的二进制格式来使消息高速传输。
2、AMQP (Advanced Message Queuing Protocol)是高级消息队列协,特性:支持事物、持久化支持,出生金融行业,在可靠性消息处理上具有天然的优势(RabbitMQ、ActiveMQ)
3、MQTT(Message Queing Telemetry Transport)消息队列遥测传输,是IBM开发的一个即时通讯协议,物联网系统架构中的重要组成部分。特性:轻量、结构简单、传输快、没有事物支持、没有持久化相关设计(RabbitMQ、ActiveMQ)
4、Kafka协议是基于TCP的二进制协议,消息内部是通过长度来分隔,由一些基本数据类型组成。特性:结构简单、解析快、无事物设计、有持久化设计。(Kafka)
5、OpenMessage 是近一两年由阿里发起,与雅虎、滴滴出行、Streamlio等公司共同参与创立的分布式消息中间件、流处理领域的应用开发标准。是国内首个在全球范围内发起的分布式消息领域国际标准。RocketMQ

持久化支持

ActiveMQ RabbitMQ Kafka RocketMQ
文件系统 支持 支持 支持 支持
数据库 支持 / / /

消息分发

ActiveMQ RabbitMQ Kafka RocketMQ
发布订阅 支持 支持 支持 支持
轮询分发 支持 支持 支持 /
轮询公平分发 / 支持 支持 /
重发 支持 支持 / 支持
消息拉取 / 支持 支持 支持

高可用机制

消息中间件能够集群部署来达到高可用的目的。
1、Master-Slave主从共享数据模式
当Master收到客户端的消息后,放到共享的文件系统/数据库
2、Master-Slave主从同步部署方式
当Master收到客户端的消息后,发给其他broker同步。
3、Broker-Cluster多主集群转发部署方式
转发数据或转发请求。
4、Master-Slave 和Broker-Cluster结合

高可靠

消息传输可可靠:通过协议来保证系统间数据解析的正确性。
消息存储可靠:通过持久化来保证消息的储存可靠性