ZeroMQ-0.1.1源码分析

ZeroMQ是一个分布式消息处理架构,是由C++语言实现的,其底层传输协议支持TCP, UDP,多播, POSIX IPC等实现.在后续的开发中,陆续实现了以C, Java, PHP, Python等语言实现的版本,但是非C++的实现版本中,底层传输协议支持的比较有限,但基本上均支持TCP协议.以C++实现的ZeroMQ分布式消息引擎的github源码工程请参考:https://github.com/zeromq/libzmq

在大多数消息系统的架构设计中,都存在一个消息服务器,称之为broker.应用程序连接到broker,通过broker与其他应用程序进行消息通讯.这种架构的优点是:应用程序不必知道它所通讯的其他应用程序的位置;消息发送者和消息接收者的生命周期也不必重合.broker对于解耦应用程序设计有很大的优势.但是broker架构存在的挑战是,如果系统中消息数量比较大,消息服务器可能是整个系统的性能瓶颈.其次,因为存在着中心节点broker,需要考虑单点故障的情况.关于消息系统中进行broker设计(或者无broker设计)的介绍可以参考http://zeromq.org/whitepapers:brokerless

ZeroMQ-0.1.1是其初始发布的第二个版本,实现了一个高性能的异步IO架构,来进行应用程序间的消息通讯.这个版本中并没有实现broker架构,因此也没有实现发布(publisher)/订阅(subscriber)等典型的处理机制.ZeroMQ-0.1.1是作为一个嵌入式的库整合到应用程序之中.

在ZeroMQ后续发布的高版本中,整合了微软的Visual studio 集成开发环境, 可以在Windows系统下进行源码编译和管理,请参考ZeroMQ工程目录builds/msvc下面的配置文件.ZeroMQ-0.1.1只是提供了在类linux系统中,用make进行编译的方式,为了在linux系统下方便的阅读代码和开发,可以使用Eclipse IDE编译源码工程.有2个细节需要注意的是:通常IDE中会添加一个include目录来管理头文件, ZeroMQ-0.1.1源码工程中,有些文件include其他头文件的路径需要调整.其次,ZeroMQ的C++实现中,扩展名hpp的是头文件,但是內联实现了很多类定义和函数定义,但是这种文件还是要放到IDE中的include目录下面.用Eclipse IDE管理ZeroMQ-0.1.1源码的目录结构及文件如下图所示:
ZeroMQ-0.1.1源码分析
ZeroMQ-0.1.1源码分析

TODO: ZeroMQ-0.1.1源码分析之消息处理引擎