1.什么是消息中间件
利用高效可靠的消息传递机制进行平台无关的数据交流;
并基于数据通信来进行分布式系统的集成;
通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信;
2.消息中间件的应用场景
跨系统数据传递、高并发流量削峰、数据异步处理
3.常用的消息中间件
AcitveMQ,RabbitMQ,Kafka,RocketMQ
4.本质
一种具备接收请求、保存数据、发送数据等功能的网络应用。
和一般网络应用程序的区别是它主要负责数据的接收和传递,所以性能一般都高于普通程序。
5.5大核心组成
协议,持久化机制,消息分发机制,高可用设计,高可靠设计
消息中间件常用的协议:OpenWire,AMQP,MQTT,Kafka,OpenMessage
消息中间件为啥不用http协议?
http协议复杂,短连接
AMQP协议(Advanced message Queuing protocol)高级消息队列协议,摩根大通,特性:事务,持久化,金融行业(RabbitMQ,ActiveMQ)
MQTT协议(Message Queuing Telemetry Transport)消息队列遥测传输,IBM开发 特性:轻量,结构简单,传输快,没有事务支持,没有持久化,物联网(RabbitMQ,ActiveMQ)
Open messaging,阿里发起,擅长流处理领域 特性:结构简单,解析快,事务,持久化(Apache RocketMQ)
Kafka 特性:结构简单,解析快,无事务(0.11之后支持事务),有持久化(Kafka)
持久化:
ActiveMQ | RabbitMQ | Kafka | RocketMQ | |
文件系统 | 支持 | 支持 | 支持 | 支持 |
数据库 | 支持 | / | / | / |
消息分发:
(1)主动推,(2)拉取
分发策略:
ActiveMQ | RabbitMQ | Kafka | RocketMQ | |
发布订阅 | 支持 | 支持 | 支持 | 支持 |
轮询分发 | 支持 | 支持 | 支持 | / |
公平分发 | / | 支持 | 支持 | / |
重发 | 支持 | 支持 | / | 支持 |
消息拉取 | / | 支持 | 支持 | 支持 |
高可用:产品在规定的条件和规定的时间时刻或者时间区间内处于可执行规定功能状态的能力。当业务量大时,一台消息中间件可能无法满足需求,所以需要消息中间件能够集群部署,来达到高可用的目的。
Master-Slave主从共享数据部署方式
Master-Slave主从同步部署方式
Broker-Cluster多主集群同步部署方式
Broker-Cluster多主集群转发部署方式
Master-Slave与Broker-Cluster结合
高可靠:是指系统可以无障碍的持续运行,比如一个系统从来不崩溃、报错,或者崩溃报错的几率很低,那就是高可靠。
从下面几个方面考虑:
消息传输可靠:通过协议来保证系统间数据解析的正确性
消息存储可靠:通过持久化来保证消息存储可靠性