您好,欢迎来到有书房!

常见消息队列中间件的区别

分类:知识大全作者:互联网王者 发布时间:2014-01-29 15:56:22阅读:2.7万+

引言:消息队列,一般简称为MQ(Message Queue),消息队列是互联网大型系统中的重要中间件,消息队列有三大作用,应用解耦、流量削峰、异步处理,除此之外还有广播、日志处理等其他作用。

        消息队列,一般简称为MQ(Message Queue),消息队列是互联网大型系统中的重要中间件,消息队列有三大作用,应用解耦、流量削峰、异步处理,除此之外还有广播、日志处理等其他作用。


        实现消息队列的方式主要有两种,即JMS接口和AMQP协议。基于JMS接口的消息队列有ActiveMQ、RocketMQ等,基于AMQP协议的的消息队列有RabbitMQ等。


        JMS接口:即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。接口包括create、send、recieve等,使用它得实现它定义的接口。 JMS消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。


        AMQP协议:即Advanced Message Queuing Protocol,是一个应用层标准高级消息队列协议,是一种二进制协议,提供统一消息服务。AMQP协议是应用层协议的一个开放标准,为面向消息的中间件设计,提供客户端应用与消息中间件之间异步、安全、高效地交互。基于AMQP协议来实现消息中间件,不受任何开发语言限制。AMQP还可以用作物联网IoT协议。


        目前常见的消息队列中间件包括以下几种:


        TIB(The Information Bus),传说中的第一款消息队列,Teknekron公司实现了第一个消息队列中间件TIB,第一次提出发布订阅模式来解决系统之间的通信问题;


        IBM MQ:IBM推出的商业消息中间件,具有高可靠性、高可用性和安全性,支持多种平台和应用程序环境。


        MSMQ:微软消息队列(MicroSoft Message Queuing),微软发布消息中间件产品。MSMQ是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于相连的网络空间中的任一位置。在微软的.net平台上利用其提供的MSMQ功能,可以轻松创建或者删除消息队列、发送或者接收消息、甚至于对消息队列进行管理。


        JMS:Sun公司提出的消息标准接口,为Java提供统一的消息操作,是一系列接口及相关语义的集合,定义通用的消息格式和传递模式。


        ActiveMQ:Apache开发的一个成熟的企业级消息中间件,提供了多种部署选项和服务类型。开源消息中间件,使用Java语言编写,支持多种协议和编程语言,并提供全面的消息传递、路由和过滤功能。ActiveMQ是一个基于JMS(Java Message Service)规范的消息队列中间件,由Apache开发。它支持强大的消息传递功能,提供可靠性和可扩展性。


        RocketMQ:由阿里巴巴开发的开源消息中间件,使用Java语言编写,具有高吞吐量、高可用性和高扩展性,特别适合于处理海量消息和低延迟的场景。RocketMQ是一个分布式消息中间件,适用于分布式系统和微服务,并不完全基于JMS规范,而是提出和实现了很多更先进的思想和技术,在可用性、可靠性以及稳定性等方面都有出色的表现。



        RabbitMQ:一个功能强大的AMQP(高级消息队列协议)实现的消息队列中间件,使用以高性能、健壮以及可伸缩性出名的Erlang语言编写,性能稳定,易于使用,可靠性、灵活性和易用性的特点,支持多种协议和编程语言。


        ZeroMQ:ZeroMQ(简称ZMQ)是一个基于消息队列的多线程网络库,其对套接字类型、连接处理、帧、甚至路由的底层细节进行抽象,提供跨越多种传输协议的套接字。ZeroMQ是一个高性能的消息传递库,支持多种模型和语言绑定。它提供了简单、快速和可扩展的消息传递机制。


        Kafka:Kafka是一个高吞吐量的分布式发布订阅消息系统,它支持高吞吐量和可扩展性,常用于大数据流处理和日志收集,适用于高吞吐量和低延迟的数据处理场景,支持多种客户端和监控工具,主要用于处理大规模的实时数据流。


        另外常用的关系型数据库比如Mysql、内存数据库Redis等,也可以实现类似消息队列的功能,但是这些数据库的消息队列功能有限,无法支持高级复制的业务功能。


        ActiveMQ单机吞吐量为万级,可用性高,消息可靠性强,功能极其完备,主要用于解耦和异步。RabbitMQ单机吞吐量为万级,延时低,可靠性高,基于erlang开发,使用广泛。RocketMQ单机吞吐量为十万级,可用性高,可靠性强,功能较为完善,扩展性好。Kafka单机吞吐量为数十万级,吞吐量高,可用性也非常高,功能较为简单。所以小型或者创业公司,用RabbitMQ是不错的选择,大型公司资金充足且研发实力较强,用RocketMQ是很好的选择,在大数据领域的实时计算以及日志采集的领域,则Kafka是最佳选择。


        在当前云计算时代,各个云厂商也推出了自己的云消息队列服务,提供可靠的消息传递和管理功能,适用于云计算和大数据场景,比如阿里云和腾讯云都推出了自己的云消息队列工具,在实用性强和维护性低的方面又更进一步了。


        阿里云消息队列基于 RocketMQ 统一核心技术品牌构建了包括 RocketMQ 、RocketMQ 轻量版(原 MNS )、Kafka 、RabbitMQ 、MQTT 、EventBridge 等丰富的产品矩阵。


        腾讯云消息队列 CMQ(Cloud Message Queue,以下简称 CMQ)是基于腾讯自研消息引擎的分布式消息队列系统,CMQ 通过腾讯自研分布式 Raft 算法保证消息强一致,消息同步3副本落盘保障消息高可靠,提供消息队列、发布订阅、消息回溯、延时消息、顺序消息、消息轨迹等服务。具有高可靠、高可用、高性能、动态伸缩等优势。



声明:本文内容版权归原作者所有,未经授权,禁止转载!

声明:本站仅提供内容存储、展示服务,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的虚假信息,谨防诈骗。如发现有害或侵权内容,可联系本站删除!

发表评论

评论

联系
我们

平台负责人邮箱
282271588@qq.com

关注
公众号

关注官方公众号

下载
安卓版

下载安卓版

回到
顶部