消息队列协议

协议是在 TCP/IP协议基础之上构建的一种约定成俗的规范和机制,主要目的可以让客户端(应用程序 java,go)进行沟通和通讯。并且这种协议下规范必须具有持久化,高可用,高可靠的性能。

常见的消息中间件协议有:OpenWire、AMQP、MQTT、Kafka、OpenMessage协议。

什么是协议?

计算机底层操作系统和应用程序通讯时共同遵守的一组约定,只有遵循共同的约定和规范,系统和底层操作系统之间才能互相交流

和一般的网络应用程序的不同,它主要负责数据的接收和传递,所以性能比较高

协议对数据格式和计算机之间交换数据都必须严格遵守规范


 

AMQP协议

全称:Advanced Message Queuing Protocol  高级消息队列协议

由摩根大通集团联合其他公司共同设计,是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制,Erlang中的实现有RabbitMQ等

特性

  1. 分布式事务支持
  2. 消息的持久化支持
  3. 高性能和高可靠的消息处理优势

协议支持者:RabbitMQ(支持的更加完善)、ActiveMQ

MQTT协议

全称:Message Queuing Telemetry Transport 消息队列是IBM开放的一个即时通讯协议,

物联网系统架构中的重要组成部分

特性

  1. 轻量
  2. 结构简单
  3. 传输快,不支持事务
  4. 没有持久化设计

应用场景:使用于计算能力、有限低带宽、网络不稳定的场景

协议支持者:RabbitMQ、ActiveMQ

OpenMessage协议

是近几年由阿里、雅虎和滴滴出行、Stremalio等公司通过参与创立的分布式消息中间件、流处理等领域的应用开发标准

特性

  1. 结构简单
  2. 解析速度快
  3. 支持事务和持久化设计

协议支持者:Apache RocketMQ

Kafka协议

消息传送过来转换成二进制,然后就直接传送过去

基于TCP/IP的二进制协议。消息内部是通过长度来分割,由一些基本数据类型组成。

特性

  1. 结构简单
  2. 解析速度快
  3. 无事务支持
  4. 有持久化设计

协议支持者:Kafka    性能最快,传输速度最快的一个消息队列

结论

RabbitMQ 市面上非常流行,开源产品,滴滴美团都在使用,支持的模式和持久化机制非常健全,与Spring是同一家公司开发出来的产品,Spring的框架对它的支持,以及开发领域和运用领域非常完善

Kafka 性能最高, 基于tcp/ip底层二进制协议,逼近于底层协议,不支持事务,支持持久化和分发机制,大数据领域用的比较多

RocketMQ 是由阿里和滴滴联合开发出来的,开源半开源,已托管给Apache,由国内团队开发,该研发团队一旦解散,就会面临技术停更,如果遇到开发问题,无法进行解决

性能依次从高到低如下:Kafka——RabbitMQ——RocketMQ——ActiveMQ

思考:为什么消息中间件不直接使用http协议呢?

  1. 因为http请求报文头和响应报文头是比较复杂的,包含了cookie,数据的加密解密,状态码,响应等附加的功能,但对于一个消息而言,负责数据传递、存储、分发就行;追求的是高性能,尽量简洁,快速。

  2. http大部分都是短链接,在实际交互过程中,一个请求到响应很有可能会中断,中断后就不会就行吃就好,从而造成请求的丢失,不利于消息中间件的业务场景,因为消息中间件可能是一个长期的获取消息的过程,出现问题和故障要对数据或消息就行持久化等,包装消息和数据的高可靠和稳健的运行

——追求极致的性能和体验,和具有高可用,高可靠性,显然http是无法达成了

短链接指:一路发的请求,当服务器发生故障,请求会丢失,并不会维持连接的关系,中断后,不会就行持久化

长链接指:当服务器发生故障,重启后,依然可以进行数据的传递

思考:为什么不直接使用TCP/IP协议?

由于TCP太过于简洁,没办法满足定义的需求和规范,里面的东西并不能承载这些消息的内容和载体(还涉及到队列、交换机等等信息),故此在此协议上重新定义些语法规范等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AMQP(高级消息队列协议)是一种开放的网络协议,用于在分布式系统中传递和存储消息。它广泛应用于各种实时通讯、物联网、金融交易等领域。 AMQP定义了消息的格式和交换方式,并提供了强大的消息路由和可靠性机制,确保消息的可靠传输和处理。它可实现多对多的通信模式,支持消息的分发、过滤、排序等高级特性。 RabbitMQ是一个基于AMQP协议的开源消息中间件。它提供了一个可靠的、灵活的、可扩展的消息分发系统。RabbitMQ基于可插拔的插件机制,可以在不同的场景中灵活配置和扩展其功能。它具有高可用性、可靠性和可伸缩性,在分布式系统中被广泛应用。 RabbitMQ的核心概念包括生产者、消息队列和消费者。生产者负责产生消息并将其发送到RabbitMQ的消息队列中。消息队列是RabbitMQ的核心组件,用于存储消息,并根据一定的规则将消息分发给消费者。消费者则从消息队列中订阅并接收消息进行处理。 RabbitMQ还支持多种消息模型,如发布-订阅模型、工作队列模型和路由模型等。它可以根据不同的业务需求和场景,选择合适的消息模型来实现消息的可靠传输和处理。 总之,AMQP是一种用于分布式系统的高级消息队列协议,而RabbitMQ是基于AMQP的开源消息中间件。它们通过提供消息的格式、交换方式和路由规则等机制,实现了可靠的、灵活的消息传输和处理,极大地方便了分布式系统的开发和部署。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值