三个主流消息中间件区别.docx

上传人:scccc 文档编号:14104635 上传时间:2022-02-02 格式:DOCX 页数:5 大小:71.93KB
返回 下载 相关 举报
三个主流消息中间件区别.docx_第1页
第1页 / 共5页
三个主流消息中间件区别.docx_第2页
第2页 / 共5页
三个主流消息中间件区别.docx_第3页
第3页 / 共5页
三个主流消息中间件区别.docx_第4页
第4页 / 共5页
三个主流消息中间件区别.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《三个主流消息中间件区别.docx》由会员分享,可在线阅读,更多相关《三个主流消息中间件区别.docx(5页珍藏版)》请在三一文库上搜索。

1、三个主流消息中间件区别市场上的消息中间件:mom4 jmom4j是一个完全实现JMS1. 1规范的消息中间件并且向下兼容JMS1. 0与1. 02.它提 供了自己的消息处理存储使它独立于关系数据与语言,所以它的客户端可以用任何语言开 发.OpenJMSOpenJMS是一个开源的Java Message Service API 1. 0. 2规范的实现,它包含有以下 特性:*.它既支持点到点(point-to-point ) (PTP)模型和发布/订阅(Pub/Sub)模型。 *.支持同步与异步消息发送* . JDBC持久性管理使用数据库表来存储消息*.可视化管理界面。*. Applet支 持。

2、* .能够与Jakarta Tomcat这样的Servlet容器结合。*.支持RMI, TCP, HTTP与 SSL协议。*.客户端验证* .提供可靠消息传输、事务和消息过滤 UberMQUberMQ完全实现了 Java Message Service规范。UberMQ是因为现有的许多JMS提供 商已经违背了分布式计算的核心原则:快速与简单而开发的。Hermes JMS利用它提供的Swing UI可以很好的实现监控JMS providerso ActiveMQActiveMQ是一个开放源码基于1 Apache 2. 0 licenced发布并实现了 JMS 1.1。它能够 与Geronimo,

3、轻量级容器和任Java应用程序无缝的给合。SomnifugiSomnifugi使得I:作在同一个java虚拟机中的线程能实现消息互发。MantaRayMantaRay基丁 peer-2-peer技术。它具有以下特性:1.它既支持点对点(point-to- point) 的域, 乂支持发布/订阅(publish/subscribe)类型的域。2.并且提供对下列类型 的支持:经认可的消息传递,事务型消息的传递,一致性消息和具有持久性的订阅者支持。 3.消息过滤体制。4.能与 WebLogic and WebSphere 给合。5.支持 TCP, UDP 与 HTTP 传输协。PresumoPres

4、umo 也是一个实现 Java Message Service API 的 JMS 消息中间件。 JORAMJORAM 一个类似于openJMS分布在ObjectWeb之下的JMS消息中间件。JMS4SpreadJMS4Spread是一个消息系统.它部分地实现了 Java消息服务(JMS) API. Open Message QueueOpen Message Queue 是 Sun Java System Message Queue 的一个开源版本。Open message queue是一个企业级,可升级,非常成熟的消息服务器。它为面向消息的系统集 成提供一套完整的JMS (Java Mes

5、sage Service )实现。由于Open MQ源自Sun的Java Message Queue,所以其具有Java System Message Queue拥有的所有特性,功能和性能。 FFMQFFMQ是一个轻量级,高性能,快速的Native JMS1. 1开源实现。支持SSL远程连接, 自动防故障的持久化机制,基于模板定义目的地(Destination),采用模式匹配自动创 建目的地(Destination)。 MQSSave/MQSLoadMQSSave是一个简单的Java程序,能够读取MQSeries队列的消息保存至文件中。而 MQSLoad是一相反的Java程序,能够读取文件中的

6、消息然后加教至MQSeries队列中。 HornetQHornetQ是一个支持集群和多种协议,可嵌入、高性能的异步消息系统。HornetQ完 全支持JMS, HornetQ不但支持JMS1. 1 API同时也定义属于自己的消息API,这可以最大 限度的提升HornetQ的性能和灵活性。在不久的将来更多的协议将被HornetQ支持。? HornetQ拥有超高的性能,HornetQ在持久化消息方面的性能可以轻易的超乎其它常见的 非持久化消息引擎的性能。当然,HornetQ的非持久化消息的性能会表现的更好!?HornetQ完全使用POJO,纯POJO的设计让HornetQ可以尽可能少的以来第三方的包

7、。从 设计模式来说,HornetQ这样的设计入侵性也最小。HornetQ既可以独立运行,也可以与 其它Java应用程序服务器集成使用。? HornetQ拥有完善的错误处理机制,HornetQ提供服务器复制和故障自动转移功能, 该功能可以消除消息丢失或多个重复信息导致服务器出错。? HornetQ提供了灵活的集群功能,通过创建HornetQ集群,您可以享受到到消息的 负载均衡带来的性能提升。您也可以通过集群,组成一个全球性的消息网络。您也可以灵 活的配置消息路由。? HornetQ拥有强大的管理功能。HornetQ提供了大量的管理API和监控服务器。它 可以无健的与应用程序服务器整合,并共同工作

8、在一个HA环境中。Apache QpidApache Qpid 是最新开放企业信息标准 AMQP (Advanced Message Queuing Protocol) 的一个开源实现。Java版实现完全支持JMS标准,可运行在任意Java平台上。此外Qpid 还提供AMQP Client APIs的各种语言实现包括:? C+? Java, fully conformant with JMS 1. 1 ? C# . NET, 010 using WCF ?Ruby ? Python Spring AMQPSpring AMQP是一个用于替换原先Spring JMS支持的消息解决方案。提供收发消

9、息的 模板,还支持基于消息驱动的POJO。用法和配置与Spring中对JMS的支持一样。这个项 目包含Java和.NET两个版本。KafkaKafka是一个高吞吐量分布式消息系统。linkedin开源的kafka。Kafka就跟这个名 字一样,设计非常独特。首先,kafka的开发者们认为不需要在内存里缓存什么数据,操 作系统的文件缓存已经足够完善和强大,只要你不搞随机写,顺序读写的性能是非常高效 的。kafka的数据只会顺序append,数据的删除策略是累积到一定程度或者超过一定时间 再删除。Kafka另一个独特的地方是将消费者信息保存在客户端而不是MQ服务器,这样服 务器就不用记录消息的投递

10、过程,每个客户端都自己知道自己下一次应该从什么地方什么 位置读取消息,消息的投递过程也是采用客户端主动pull的模型,这样大大减轻了服务 器的负担。Kafka还强调减少数据的序列化和拷贝开销,它会将一些消息组织成Message Set做批量存储和发送,并且客户端在pull数据的时候,尽量以zero-copy的方式传输, 利用 sendfile (对应 java 里的 FileChannel. transferTo/transferFrom)这样的高级 10 函数来减少拷贝开销。可见,kafka是一个精心设计,特定于某些应用的系统,这种偏 向特定领域的MQ系统我估计会越来越多,垂直化的产品策略值

11、的考虑。playrabbitrnq这是Play! Framework开发框架的一个扩展模块用广生产和消费Rabb it MQ消息。 队列消息系统FQueue FQueue是一个高性能、基于磁盘持久存储的队列消息系统。兼容 memcached协议,能用memcached的语言都可以良好的与它通信。FQueue为你提供一个 不需要特别优化,高性能的一个消息系统。特性1. 2. 3. 4. 5. 6. 7.基丁磁盘持久化存储。支持memcached协议。支持多队列,密码验证功能。高性能,能达到数十万qps。低内存消耗。100-300M内存即可工作得很好。高效率10读写算法,10效率高。纯JAVA代码

12、。支持进程内JVM级别的直接调用.8.在不需要强顺序的场景下,支持多机负载均衡。不支持1.不支持topic方式的订阅功能。2.不支持主从复制。主流消息中间件及选型推荐:ActiveMQ:(还有升级版叫Apollo,由转向Scala,原来的架构都要改掉。但是只 支持storm协议,不支持JMS),在网络上别人反映,消息量越来越大时,当出现消息堆 积时,性能争骤下降,主要卡在磁盘写入,用了硬件加速,也还是不能忍受。消息中间件的技术选型心得一Rabb itMQ Ac tiveMQ和ZeroMQ作者:chszs* 转载需注明。博客主页:http:/blog. csdn. net/chszsRabbit

13、MQ、ActiveMQ和ZeroMQ都是极好的消息中间件,但是我们在项目中该选择咖 个更适合呢?很多开发者面临这个烦恼。下面我会对这三个消息中间件做一个比较,看了 后你们就心中有数了。RabbitMQ是AMQP协议领先的一个实现,它实现了代理(Broker)架构,意味着消息在 发送到客户端之前可以在中央节点上排队。此特性使得RabbitMQ易于使用和部署,适宜 于很多场景如路由、负载均衡或消息持久化等,用消息队列只需凡行代码即可搞定。但是, 这使得它的可扩展性差,速度较慢,因为中央节点增加了延迟,消息封装后也比较大。ZeroMQ是一个非常轻量级的消息系统,专门为高吞吐量/低延迟的场景开发,在金

14、融 界的应用中经常可以发现它。与RabbitMQ相比,ZeroMQ支持许多高级消息场景,但是你 必须实现ZeroMQ框架中的各个块(比如Socket或Device等)。ZeroMQ非常灵活,但是 你必须学习它的80页的手册(如果你要写一个分布式系统,一定要阅读它)。ActiveX居于两者之间,类似于ZemoMQ,它可以部署于代理模式和P2P模式。类似 于RabbitMQ,它易于实现高级场景,而且只需付出低消耗。它被誉为消息中间件的“瑞士 军刀”。要注意一点,ActiveMQ的下一代产品为Apollo。最终,这三个产品:1.都有客户端API且支持多种编程语言;2.都有大量的文档;3,都提供了积极

15、 的支持。遵循规范架构模型实现语言ActiveMQ JMS1. 1及J2eel. 4消息代理架构Broker Java Rabb it MQ AMPQ 消息代理架构 Broker Erlang AMPQ、Stomp 等 Lshift、 VmwareSpringSource C、Java、Python简单 支持,不支持第三方数据库 一般ZeroMQ c/s架构c/c+IMatix C、Java、Python中等发送端缓存高支持消 息协议Stomp主要推动力量Apache Redhat支持编程语言C、Java Python编程复杂 度持久化性能复杂支持一般 三个经典消息中间件的比较对于消息中间件,绝大多数熟悉的是MQ(IBM公司出品),这是目前使用最广泛的中间 件产品。还有两个也比较流行,他们是JMS和RV。JMS即JAVA消息服务(Java Message Service)应用程序接口是一个JAVA平台中关于面向消息中间件的API,用于在两个应用 程序之间,或感谢您的阅读,祝您生活愉快。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1