HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

为什么 ZeroMQ 不应该成为你的第一选择

  • 2014-08-12
  • 本文字数:1314 字

    阅读完需:约 4 分钟

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 测试,因此,生产就绪版本已经指日可待。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-08-12 09:1628430
用户头像

发布了 256 篇内容, 共 85.6 次阅读, 收获喜欢 12 次。

关注

评论

发布
暂无评论
发现更多内容

海归硕士程序员吐槽:回国一个月都没找到工作,我书都白读了?

毕业总结

菲尼克斯

架构实战营

程序员面试时自称字节跳动工作两年,被发现学历造假,结果蒙了!

模块三作业

king

iOS底层面试题(上篇)

程序员 面试

技术解码丨实时音视频与PSTN融合的解决方案

腾讯云音视频

腾讯云 音视频 PSTN

融云技术分享:全面揭秘亿级IM消息的可靠投递机制

JackJiang

即时通讯 IM 可靠消息最终一致 融云

关于程序猿的28个经典段子

时序数据库助力安全监控

greatersecurity

云原生时代,服务网格能给企业带来哪些价值?

行云创新

云原生 解决方案 服务网格

详细架构设计文档

刘丽

2021年FiL最新消息:fil值得投资吗?

区块链 IPFS fil fil矿机 fil行情

《面试八股文》之 Redis 16卷

moon聊技术

redis 面试

最壕58人逆天改命:四面阿里拿offer后,才发现师哥给的面试笔记有多强大

Java架构师迁哥

DEMO CHINA带着1000+投资人,500+好项目首登重庆

创业邦

创业 投资

程序员崩溃的40个瞬间!最后一个是你意想不到的.....

程序员工资高,到底程序员的工资有多高?你不了解的程序员!

程序员没两把刷子,就别送外卖了!!!

程序员小哥月入5万,却被丈母娘拒绝,丈母娘一番话让小哥很尴尬

如何下载YouTube视频/影片(4K画质)

资源君

分享 经验分享 youtube视频下载 工具分享 教程分享

网络攻防学习笔记 Day86

穿过生命散发芬芳

网络攻防 7月日更

大专的我,闭关56天,含泪拿下阿里offer,五轮面试,六个小时灵魂拷问

程序员是如何看待程序员的,程序员是做什么的?

「腾讯面试题」兔子试毒

NGINX社区线下Meetup第三期成功举办 感受成都开发者们的NGINX热情

爱极客侠

别人都在谈爱琴海,凭什么程序员就“地中海”网友:还是太优秀!

2021- iOS开发者一份你一定会被问到的面试题(附参考答案)

iOSer

ios 面试 ios开发 iOS 知识体系

Linux文件查找常用命令-详细笔记

学神来啦

云计算 Linux 运维

Rancher × Apache APISIX:极速部署更好用的开源网关和 Ingress Controller

API7.ai 技术团队

Kubernetes 网关 rancher APISIX

从零开始学习3D可视化之演示项目

ThingJS数字孪生引擎

大前端 可视化 3D 3D可视化

【云厂商】部分知名云服务商名单

行云管家

云计算 公有云 云服务 私有云 云厂商

为什么ZeroMQ不应该成为你的第一选择_语言 & 开发_马德奎_InfoQ精选文章