目录
什么是消息中间件
消息中间件概述
- 消息中间件
利用高效,可靠的消息传递机制进行平台无关的数据交流;基于数据通信来进行分布式系统的集成;通过提供消息传递和消息排队模型,在分布式环境下扩展进程间的通信。
- 消息中间件应用场景
跨系统数据传递,高并发流量削峰,数据异步处理等。
- 常用消息中间件
ActiveMQ,RabbitMQ,Kafka,RocketMQ
消息中间件核心设计
- 本质
一种具备接收请求,保存数据,发送数据等功能的网络应用。和一般网络应用程序的区别是它主要负责数据的接收和传递,因此性能高于普通程序。
- 组成部分
- 协议
- 持久化机制
- 消息分发机制
- 高可用机制
- 高可靠设计
消息中间件常见协议
- 协议概念
是计算机之间通信时共同遵从的一组约定。是对于数据格式和计算机之间交换数据是必须遵守的规则的正式描述。
- 协议三要素
- 语法:数据与控制信息的结构或格式。
- 语义:需要发出何种控制信息,完成克重动作以及做出何种响应。
- 时序(同步):事件实现顺序的详细说明。
- 常见协议
协议名称 | 应用场景 | 特性 | 支持的MQ |
AMQP(Advanced Message Queuing Protocol) 高级消息队列协议 | 金融行业 | 事务支持,持久化支持,高可靠性 | ActiveMQ,RabbitMQ |
MQTT(Message Queuing Telemetry Transport) | 物联网 | 轻量,结构简单传输快,无事务,低带宽,网络不稳定 | ActiveMQ,RabbitMQ |
Open Message协议 | 流处理 | 结构简单,解析快,支持事务,持久化 | Apache RocketMQ |
Kafka 协议 | 二进制协议 | 结构简单,解析快,不支持事务,持久化 | Kafka |
消息持久化
- 概念
将数据存入磁盘,而不是随着服务重启而消失,使数据能够永久保存。
- 常用持久化方式
ActiveMQ | RabbitMQ | Kafka | RocketMQ | |
文件系统 | 支持 | 支持 | 支持 | 支持 |
数据库 | 支持 | / | / | / |
消息分发
ActiveMQ | RabbitMQ | Kafka | RocketMQ | |
发布订阅 | 支持 | 支持 | 支持 | 支持 |
轮询分发 | 支持 | 支持 | 支持 | / |
公平分发 | / | 支持 | 支持 | / |
重发 | 支持 | 支持 | / | 支持 |
消息拉取 | / | 支持 | 支持 | 支持 |
高可用策略
高可靠