【FCon】聚焦金融行业在数智化的全面革新,一线的金融数智化实践干货 了解详情
写点什么

ØMQ(ZeroMQ) 简介

  • 2010-09-21
  • 本文字数:1981 字

    阅读完需:约 6 分钟

6 月 17 日,极客时间《企业级 Agents 开发实战营》正式上线,10 周掌握企业级 Agents 从设计、开发到部署全流程。

Ilya Grigorik,即 PostRank 的创始人兼 CTO,为 ZeroMQ 写了个简介如下

所有网络交互所使用的 API 实际上是 Berkeley 套接字 (BSD) 。这个源自 1980 年代早期的协议是 TCP/IP 协议的最原始实现。而且可以说,在当今各操作系统中,它是受到最广泛支持的 API,也是这些操作系统的核心组件之一。人们对 BSD 套接字的了解较多的是点对点的连接。点对点连接需要显式地建立连接、销毁连接、选择协议(TCP/UDP)和处理错误等。一旦你解决了以上所有问题,你就进入应用协议层(如 HTTP)的世界了,这里需要的是组帧、缓存和处理逻辑等。换言之,编写高性能网络协议的应用程序一点儿也不复杂。

他补充:

如果我们能对各种套接字类型、连接处理、帧、甚至路由的底层细节进行抽象,这不是件很好的事情吗?这正是 ZeroMQ(ØMQ/ZMQ)网络库的由来:“它提供一些跨多种传输协议(如进程内通讯、IPC、TCP 和广播)的套接字供你使用。你可使用多种方式实现 N 对 N 的套接字连接,譬如:扇出、发布订阅、任务分发以及请求响应。”

ZeroMQ 网站解释:

ØMQ 是网络栈中新的一层,它是个可伸缩层,分散在分布式系统间。因此,它可支持任意大的应用程序。ØMQ 不是简单的点对点交互,相反,它定义了分布式系统的全局拓扑。ØMQ 应用程序没有锁,可并行运行。此外,它可在多个线程、内核和主机盒之间弹性伸缩。

ZeroMQ 是由社区推动的:

ØMQ(又称作 ZeroMQ 或 0MQ)是由数十位作者历时三年合作开发出来的自由软件

Ilya 解释:

  • ZeroMQ 交互是面向消息的。它将人们每天为应用程序周而复始地进行的例行消息处理封装起来。这意味着如果当客户端套接字发送一条 150KB 大小的消息时,服务端套接字无需显式处理任何缓存(buffer)或组帧,即能接接收到一条完整而相同的消息。
  • ZeroMQ 套接字与传输协议无关:对于任何协议,只有单一且统一的发送消息和接收消息 API。缺省情况下支持进程内通讯、IPC、广播和 TCP。此外,协议间切换非常简单,仅需更改连接字符串的前缀即可。
  • ZeroMQ 套接字能感知路由和网络拓扑。因为我们不再需要显示地管理点对点的连接状态——在上面我们已经看到,所有这些都已经由 ZeroMQ 库封装好——所以单个 ZeroMQ 套接字可以绑定两个独立的端口并监听他们的入站请求消息;也可使用一个 API 调用向两个独立的套接字发送数据。

Ilya 补充解释:

缺省情况下,ZeroMQ 中所有的交互都是异步的。这种异步处理模型使得 ZeroMQ 能够将建立连接、销毁连接、重新连接的过程封装起来,同时又能实现消息传输延迟的最小化:非阻塞的含义是,应用中一般的消息处理都是并行进行的,如消息的发送、传输以及(在发送端或接收端)排队。当然,你也可以控制 ZeroMQ 的排队行为,只需要设定内存范围即可,甚至你还可以为每个套接字设定交换区域。所以,如果需要的话,你完全可以模拟阻塞式 API,但是异步 I/O 是缺省的行为。

Mongrel2 是使用 ZeroMQ 的一个 Web 服务器。Ilya 解释:

Mongrel2 给出了将 ZeroMQ 应用于 Web 服务器的一个有趣的案例研究:所有入站消息通过“Push”套接字路由到 Mongrel2,套接字可以自动实现负载均衡,将消息分发到连接处理器。反过来,连接处理器处理入站消息(通过 Pull 套接字),然后将处理结果发布到一个“Pub”套接字,Mongrel2 服务器本身已订阅了该套接字,并且通过主题(topic)过滤器监听该套接字的进程号。

ZeroMQ 网站上给出了一个列表,简要给出了 ZeroMQ 较之其他传输机制的优势:

  • TCP:ZeroMQ 基于消息,消息模式,而非字节流。
  • XMPP:ZeroMQ 更简单、快速、更底层。Jabber 可建在ØMQ 之上。
  • AMQP:完成相同的工作,ZeroMQ 要快 100 倍,而且不需要代理(规范更简洁——少 278 页)
  • IPC:ZeroMQ 可以跨多个主机盒,而非单台机器。
  • CORBA:ZeroMQ 不会将复杂到恐怖的消息格式强加于你。
  • RPC:ZeroMQ 完全是异步的,你可以随时增加 / 删除参与者。
  • RFC 1149 :ZeroMQ 比它快多了!
  • 29west LBM:ZeroMQ 是自由软件!
  • IBM 低延迟:ZeroMQ 是自由软件!
  • Tibco:仍然是自由软件!

Ilya 总结:

无需多说,ZeroMQ 是一个雄心满满项目,该简介对于完整的特性集而言只能略见一斑。ZeroMQ 的明确目标是“成为标准网络协议栈的一部分,之后进入 Linux 内核”,现在还未看到它们的成功。但是,它无疑是极具前景的、并且是人们更加需要的“传统”BSD 套接字之上的一层封装。 ZeroMQ 让编写高性能网络应用程序极为简单和有趣。

Antonio Garrote 赞同 Ilya 的观点:

ZeroMQ 的确非常强大,除了快速和高效之外,它还大大简化了应用程序交互层的设计。此外,它还使得在多种场景下重用相同的交互模式成为可能。 然而,在我看来,ZeroMQ 应该被看作 RabbitMQ 之类的队列系统的补充,而不是替代品。与任何其他软件系统一样,仔细分析应用程序的需求就能让更加清楚哪种交互机制才是解决问题的最佳之选。

你在使用 ZeroMQ 吗?你如何看待它呢?


查看英文原文: An Introduction to ØMQ (ZeroMQ)

2010-09-21 10:5037980
用户头像

发布了 184 篇内容, 共 77.3 次阅读, 收获喜欢 7 次。

关注

评论

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

移动开发iOS,薪资如何?待遇怎样!

ios开发 iOS 知识体系

80后自立门户,90后异军突起,中国投资新势力加速崛起 | 创业邦2021年40位40岁以下投资人重磅发布

创业邦

创业

2021年版,拼多多/阿里/今日头条/京东 Java面经大合集(含答案)

Java架构师迁哥

百度智能云NIRO MAX机器人,打造智慧党建新体验!

百度大脑

人工智能 百度 机器人

星环科技TDH8.0使用必读2: 10种数据模型全支持 未来属于多模型大数据平台

星环科技

大数据 边缘计算 知识图谱 数据管理平台 多模型数据

Flink User-Defined Source

Alex🐒

flink 翻译 Flink扩展 flink1.13

🌏【架构师指南】分布式技术知识点总结(下)

洛神灬殇

分布式 架构设计 6月日更

深入浅出 LVS 负载均衡(三)实操 NAT、DR 模型

UCloud技术

互联网推送服务原理

hasWhere

WebRTC 传输安全机制第二话:深入显出 SRTP 协议

阿里云视频云

音视频 WebRTC 通信 流媒体开发 SRS流媒体服务器

搭建Prometheus+Grafana的云平台监控系统

学神来啦

云计算 Linux 运维 开发日志

WebRTC学习—WebRTC详解

Linux服务器开发

音视频 WebRTC ffmpeg SRS流媒体服务器

在线图片坐标拾取工具

入门小站

终端架构深研,CodeDay 成都站等你

蚂蚁集团移动开发平台 mPaaS

flutter mPaaS Codeday Meetup

必须加强对电商促销节的监管:保障普通消费者合法权益

石头IT视角

阿里云边缘容器服务ACK@Edge 通过33项测评,拿到“2021云边协同能力认证”

阿里巴巴中间件

2021年5月云主机性能评测报告出炉,华为云跃居榜首

博睿数据

云主机 博睿数据 博睿指数

《转》HttpURLConnection自动重试机制

hasWhere

一体化、标准化、可视化数据平台,博睿数据领跑智能运维新典范

博睿数据

博睿数据 数据链DNA dataview

BoCloud博云稳居中国容器软件市场份额TOP 5

BoCloud博云

容器

专科小伙豪取三杀,斩获阿里、京东和蚂蚁Java岗offer的原因找到了!

北游学Java

Java 面试

细细阅读,3张图带你理解,零拷贝,mmap和sendFile

奔着腾讯去

c++ Linux Mmap C++后台开发 网络io

阿里云中间件首席架构师李小平:企业为什么需要云原生?

阿里巴巴中间件

C#开发之基于NPOI的操作Excel开发体验

DisonTangor

C# Excel

第六课作业

杰语

网易有道开源EMLL:高性能端侧机器学习计算库,大幅提高计算性能

有道技术团队

人工智能 机器学习 高性能计算 端侧AI

数据库设计的 10 个最佳实践

xcbeyond

数据库 数据库设计 6月日更

iOS开发21年6月面试总结(未完待续~)

iOSer

ios 面试 ios开发 iOS 知识体系

关于Redis分布式锁的那些事

Hex

redis 后端

WWDC21 给开发者最重要的7条新信息

阿里巴巴大淘宝技术

开发者 WWDC21

16倍效率提升体验,博睿数据APM成企业运维超级加速器

博睿数据

APM 博睿数据 数据链DNA

ØMQ(ZeroMQ)简介_架构_Jean-Jacques Dubray_InfoQ精选文章