开源架构:ZeroMQ

ØMQ你可以认为是一个消息系统,也可以认为是一个“面向消息的中间件”。它被广泛地应用在多个方面:财务系统、游戏开发、嵌入式系统、学术研究和航空航天。

消息系统最基本的功能就是为应用程序提供及时消息的发送。应用程序决定与其他一个(多个)应用程序进行通信,汇编数据然后进行发送。点击“发送”按钮一切搞定——消息系统把剩下的事情全部搞定。

和及时通信有所不同,消息系统没有GUI,出错的时候通讯终端没有人工干预和调停,所有消息系统必须具备容错性并且要比通常的及时消息要更快。

ØMQ原本是为股票交易所构思的一个超快消息系统,并进行了深度优化。项目开始第一年,工作的主要焦点是发明一些基准测试方法,并努力去定义一个尽可能高效的架构。

后来,大约在第二年的开发中,工作焦点转移为:提供一个构建分步式应用、支持任意消息通信模式、各种传输机制,任意语言绑定的通用系统。

在第三年中,专注于提高可用性和降低学习曲线,采用了BSD sockets的API,尝试去清除各个消息的模式的语义差异,等等。

希望本篇,能够对上面三点转化为ØMQ的内部架构有所深入认识,为那些还为同样问题挣扎的人们提供一些提示信息。

从第三年开始,ØMQ不断扩大代码库。试图建立一个通信标准,并把实验性的类似ØMQ的消息系统加入Linux内核。这些主题,本篇不做讨论,想了解更多,点击:

1. 应用程序 vs. 库

2. 全局状态

3. 性能

4. 关键路径

5. 内存分配

6. 批处理

7. 架构概览

8. 并发模型

9. 无锁算法

10. API

11. 消息模式

12. 结论

David++