1 | 2 | 3 |
---|---|---|
ActiveMQ | RabbitMQ | Kafka |
中间件是处于操作系统和应用程序之间的软件,也有人认为它属于操作系统中的一部分。
人们在使用中间件时,往往是一组中间件集成在一起,构成一个平台,但在这组中间件中必须要有一个通信中间件,即中间件=平台+通信,这个定义也限定了只有用于分布式系统中才能称为中间件,同时它还可以把它与支撑软件和实用软件区分开来。
中间件屏蔽了低层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,可以将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,即为解耦。中间件带给应用系统的不只是开发的简便,也减少了系统的维护,管理等工作量,还减少了计算机总体费用的投入
脱离于具体设计目标,而具备提供普遍独立功能需求的模块,这使得中间件一定是可替换的。如果在一个系统设计中,中间件不可替换,那么不是架构设计有问题,就是这个中间件,在别处可能是中间件,而在这个系统中是个引擎
中间件应该具有以下几个特点
- 满足大量应用的需求
- 运行于多种硬件和OS平台
- 支持分布计算,提供跨网络,硬件和OS平台的透明性的应用或服务的交互
- 支持标准的协议以及标准的接口
- 跨系统数据传递
- 高并发的流量削峰
- 数据的分发和异步处理
- 大数据分析与传递
- 分布式事务
在有大量数据迁移,或者请求并发很多的时候,可以将这些请求放到消息队列内,让它稳定可靠的执行
- 消息的协议
- 消息的持久化机制
- 消息的分发策略
- 消息的高可用
- 消息的容错机制
AMQP即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同开发语言等条件的限制
特点:
- 支持分布式事务
- 消息的持久化支持
- 高性能,高可用的消息处理优势
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器(比如通过Twitter让房屋联网)的通信协议。
适用于计算能力有限,低带宽和网络不稳定等场景。
特点:
- 轻量,结构简单
- 传输快,但不支持事务
- 没有持久化设计
kafka协议是基于TCP/IP的二进制协议,消息内部是通过长度来分割,由一些基本数据类型组成
特点:
- 结构简单,解析速度快
- 有持久化设计
- 无事务支持