nanomsg 高性能通信库_zeromq与nanomsg比较

zeromq与nanomsg比较

Tyler Treat是一名软件开发人员,他近日发表了一篇博文《为什么ZeroMQ不应该成为你的第一选择》。

文中,Tyler Treat对nanomsg和ZeroMQ进行了比较。nanomsg是一个套接字库,提供了多种常见的通信协议,其目标是使网络层更快、更具扩展性、更容易使用。它用C进行了彻底地重写,可以说是对ZeroMQ的重建。它构建在ZeroMQ的可靠性能之上,同时又提供了若干重要的改进。而且,它还试图消除ZeroMQ经常出现一些怪异行为。作者从以下几个方面对二者进行了比较:

用于新传输协议的API——对于ZeroMQ,人们经常抱怨的问题是它没有提供用于新传输协议的API,这从根本上把用户限制在TCP、PGM、IPC和ITC上。而nanomsg提供了一个可插拔的接口,用于新的传输(如WebSockets)和消息协议。

POSIX兼容性——nanomsg完全兼容POSIX,而且API更简洁,兼容性更好。在ZeroMQ中,套接字用空指针表示,然后绑定到上下文;而在nanomsg中,只需要初始化一个新的套接字并使用它,一步即可完成。

线程安全——ZeroMQ在架构上有一个根本性缺陷:其套接字不是线程安全的。在ZeroMQ中,每个对象都被隔离在自己的线程中,因此不需要信号量和互斥锁。并发是通过消息传递实现的。nanomsg消除了对象与线程间的一对一关系,它不再依赖于消息传递,而是将交互建模为一组状态机。因此,nanomsg套接字是线程安全的。

内存和CPU使用效率——ZeroMQ使用一种很简单的Trie结构存储和匹配发布/订阅服务。当订阅数超过10000时,该结构很快就显现出不合理之处了。nanomsg则使用一种称为“基数树(radix tree)”的结构来存储订阅,并提供了真正的零复制API,允许内存从一台机器复制到另一台机器,而且完全不需要CPU的参与,这极大地提高了性能。

负载均衡算法——ZeroMQ采用了轮转调度算法。虽然该算法可以平均分配工作,但也有其局限性。比如,有两个数据中心,一个在伦敦,一个在纽约。在理想情况下,一个位于伦敦数据中心的网站,其请求不应该路由到纽约。但在ZeroMQ的负载均衡算法里,这完全有可能。而nanomsg避免了这种情况的出现。

除此之外,文中还提到,nanomsg提供了一个名为nanocat的命令行工具,用于与系统进行交互。

作者继续写道,nanomsg旨在实现“可扩展协议(Scalability Protocols)”,用于构建可扩展的高性能分布式系统。当前,它定义了六种不同的可扩展协议:PAIR、REQREP、PIPELINE、BUS、PUBSUB和SURVEY。

既然nanomsg在ZeroMQ的基础上做了如此多的改进,那我们为什么还要用ZeroMQ呢?针对这个疑问,作者指出,nanomsg还相对年轻,它还没有达到ZeroMQ的成熟度,没有像ZeroMQ那样有一个繁荣的开发者社区。另外,ZeroMQ有丰富的文档及其它资源,可以帮助开发人员使用它,而nanomsg的文档非常少。

尽管如此,作者还是认为nanomsg所做的改进,尤其是它的可扩展协议,使它非常有吸引力。从技术上讲,从三月份开始,nanomsg就已经开始beta测试,因此,生产就绪版本已经指日可待。

参考连接: https://my.oschina.net/ifraincoat/blog/546584 ;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ZeroMQ是一种在云时代中提供极速消息通信ZeroMQ是一个开源的、高性能的消息传递,它能够以非常低的延迟和高吞吐量进行快速的消息传输。 ZeroMQ的设计理念是简单易用,同时具备灵活性和可扩展性。它提供了简单而灵活的API,允许开发人员使用不同的通信模式和拓扑结构来构建自己的通信系统。 ZeroMQ的架构基于Socket通信模型,它提供了各种编程语言的绑定,包括C、C++、Python、Java等。这意味着开发人员可以使用自己熟悉的编程语言来开发使用ZeroMQ的应用程序。 ZeroMQ支持多种消息传输模式,包括点对点通信、发布-订阅模式、请求-回应模式和路由模式。开发人员可以根据具体的需求选择最合适的模式来进行消息通信ZeroMQ的特点之一是其高性能。它通过使用高效的消息队列机制,最大限度地减少了消息传输的延迟。同时,ZeroMQ还支持并发处理和多线程操作,可以在多核系统中充分利用计算资源,提高系统的吞吐量和性能。 另一个重要的特点是ZeroMQ的可扩展性。它的架构允许开发人员构建分布式系统,并通过添加更多的节点来扩展系统的规模和容量。ZeroMQ还提供了一套高级的路由和负载均衡机制,使得开发人员可以轻松地构建高可用性和高可伸缩性的系统。 综上所述,ZeroMQ是一个在云时代中非常有用的极速消息通信。它简单易用、性能高效、可扩展性强,可以满足各种复杂的消息通信需求。无论是构建实时数据处理系统、构建高并发的网络服务,还是构建分布式应用程序,ZeroMQ都是一个值得考虑的选择。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值