一. 什么是消息中间件
利用高效可靠的消息传递机制进行平台无关的数据交流;
并给予数据通信来进行分布式系统的集成;
通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。
二.消息中间件应用场景
1.跨系统数据传递
2.高并发流量的削峰,
3.数据的异步处理。
三.常用消息中间件
ActiveMQ:由Apache纯用java进行开发的消息中间件,存在的时间久远,完全遵循JMS进行开发。
RabbitMQ:支持的消息分发机制最全,使用Erlang语言进行开发的
Kafka:使用scala和java进行开发的语言,为了弥补Activemq的吞吐量低而进行开发的语言。具有高吞吐量的特点,可以和Hadoop结合。进行大数据的开发。
RocketMQ:由阿里使用java开发的一个高性能分布式,经受了双十一的考验。
四.消息中间件核心设计及各部分概述
本质:一种具有接受请求,保存数据,发送数据等功能的网络应用和一般网络应用程序的区别是它主要负责数据的接受和传递,所以性能优于普通程序。
1.协议(语法,语义,同步):
OpenWire:ActiveMQ专属
AMQP:事务支持,持久化支持,出生于金融,可靠性高(RabbitMQ,ACTIVEMQ)
MQTT:即时通讯协议,主要用去物联网,轻量级,结构简单,传输快,不支持事务,没有持久化相关设计。适用于计算能力有限低带宽,网络不稳定的场景(RabbitMQ,ACTIVEMQ)
Kafka:基于tcp二进制。结构简单,解析快,无事务设计,有持久
ActiveMq | RabbitMq | Kafa | RocketMq | |
---|---|---|---|---|
文件系统 | 支持 | 支持 | 支持 | 支持 |
数据库 | 支持 | 不支持 | 不支持 | 不支持 |
化设计
OpenMessage:由阿里等发起的,特点,结构简单,解析快,支持事务,支持持久化(RocketMQ)。
2.消息分发机制
ActiveMq | RabbitMQ | Kafka | RocketMQ | |
---|---|---|---|---|
发布订阅: | 支持 | 支持 | 支持 | 支持 |
轮询分发 | 支持 | 支持 | 支持 | 不支持 |
公平分发 | 不支持 | 支持 | 支持 | 不支持 |
重发 | 支持 | 支持 | 不支持 | 支持 |
消息拉取 | 不支持 | 支持 | 支持 | 支持 |
总结:消息分发机制共有五种,分别为发布订阅,轮询发送,公平发布,重发,消息拉取。ActiveMq不支持公平发送和消息拉取。RabbitMq全部支持。Kafka不支持重发,RocketMq不支持轮询发送和公平发布
三.高可用设计
1.Master-Slave主从共享数据部署方式
2.Master-Slave主从同步部署(插入修改只能修改主数据库,占用大量带宽)
3.Broker-Cluster多主集群同步部署方式(多个主机同时同步,每一个都是主机)
4.Broker-Cluster多主集群转发部署方式(知道数据在哪里,共享元数据)
5.Master-Slave与Broker-Cluster结合
归给接地,三种形式,1.同步数据 2.知道数据在哪里 3.二者结合。
四.高可靠设计
来源:CSDN
作者:Francis.Sun
链接:https://blog.csdn.net/weixin_45718351/article/details/104448089