分布式消息中间件
什么是消息中间件?
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结合
高可靠
消息传输可可靠:通过协议来保证系统间数据解析的正确性。
消息存储可靠:通过持久化来保证消息的储存可靠性