关于ZeroMQ

来源:互联网 发布:win7美化软件 编辑:程序博客网 时间:2024/06/04 17:58
原文地址:http://unitv.cn/views-content-9.html

最近阅读了很多关于ZeroMQ的资料。近几年有关"Message Queue"的项目层出不穷,知名的就有十几种,这主要是因为后摩尔定律时代,分布式处理逐渐成为主流,业界需要一套标准来解决分布式计算环境中节点之间的消息通信。几年的竞争下来,Apache基金会旗下的符合AMQP/1.0标准的RabbitMQ已经得到了广泛的认可,成为领先的MQ项目。

  然而,ZeroMQ是个异类。iMatrix公司早期也是计划按照AMQP/1.0标准开发一个类似RabbitMQ的项目,名字叫做OpenAMQ。然而,随着项目的推进,iMatrix公司在这个项目上迷失了方向。iMatrix的CEO Pieter Hintjens在一篇文章中描述了自己对AMQP标准化进程的困惑和思考,并认为AMQP中存在一些无法克服的问题。2010年3月,iMatrix公司宣布退出AMQP/1.0标准化,放弃OpenAMQ项目,并正式启动了ØMQ,即ZeroMQ。

  与RabbitMQ相比,ØMQ并不像是一个传统意义上的消息队列服务器,事实上,它也根本不是一个服务器,它更像是一个底层的网络通讯库,在socket API之上做了一层封装,将网络通讯、进程通讯和线程通讯抽象为统一的API接口。然而,它也不同于ACE、libevent这样的网络通讯库,ØMQ对于用户传输的内容,在TCP之上又加了一层封装。这种做法有利有弊,利是通过这种方式在某些场合能够获得比raw TCP更高的传输性能,并且ØMQ的客户只需要关心消息,而不需要关心TCP的异常处理;弊则是这种通讯方式与现有的各种网络应用都不兼容,尤其是被广泛应用的HTTP,这将导致ØMQ即便有超高的传输性能,也很难在现实世界中推广。

  值得一提的是,ØMQ的Guide文档写得非常好,并不单纯是对这项技术的介绍和应用实例,而包含了很多哲学层面的思考,非常具有启发意义。

  最后,提一下ØMQ的性能,每秒处理数十万条消息,而RabbitMQ的指标是每秒一万多条。当然,这样的对比其实并不公平,因为ØMQ和RabbitMQ本不是一个层面的东西。事实上,RabbitMQ可以把底层传输换为ØMQ,这样就可以兼具功能和性能,但是又会牺牲掉AMQP兼容性。

  


原创粉丝点击