ZeroMQ简介
- 2. 什么是 ØMQ
• ØMQ 看起来是一个网络库,实际是一个并发框架。
• 它提供的 Socket,支持在进程内、进程间、或通过TCP、组播传递,提供以一
条完整消息为单位的传输接口。
• 你可以用不同模式进行N:N的连接,这些模式包括fanout、pub-sub、任务分发
和请求响应。
• 它非常快,可以胜任构建集群产品的工作。
• 它的 步模型可以让你的应用 步处理消息,利用多处理器架构的并发能
力。
• 它提供了多 语言的API,并可以运行在大多数的操作系统上。
• ØMQ由iMatrix 发,并在LGPL许可下 源。
译自官方文档 zguide 的“ØMQ in a Hundred Words”
http://zguide.zeromq.org/page:all#-MQ-in-a-Hundred-Words
- 3. ZMQ 与 Thrift, Protobuf
• ZMQ 是底层传输库
• ZMQ 解决 1:N 乃至 N:N的高效通信
• ZMQ 支持 PUSH/PULL, PUB/SUB, REQ/REP 等模式
• ZMQ 不解决序列化问题
• Thrift 是序列化 + 跨语言通信库
• Thrift 支持跨语言的 杂数据结构的序列化与反序列化
• Thrift 的底层传输(Protocol)是可插拔的
• Thrift 的底层传输是以 RPC 的点到点通信为主的
• 有尝试在 Thrift 下面,用 ZMQ 作为传输 Protocol 的,但更多的用法是和 Protobuf
混用
- 5. 简洁的代码(一)
• N:N PUSH/PULL 模
型,数据源
• 先初始化一个zmq
socket
• 用这个socket连接所有
worker
• 生成任务、发送消息
- 6. 简洁的代码(二)
• N:N PUSH/PULL 模
型,接收端
• 初始化一个zmq socket
• bind 从命令行得到的字
符串
• 接收消息,干活
- 7. 运行上述代码
• 编译
gcc -o zsource -lzmq p_source.c
gcc -o zsink -lzmq p_sink.c
• 启动接收进程
./zsink tcp://*:5001 > log.1 &
./zsink tcp://*:5002 > log.2 &
./zsink tcp://*:5003 > log.3 &
• 始发送
./zsource 1 tcp://localhost:5001 tcp://localhost:5002 tcp://localhost:5003 &
./zsource 2 tcp://localhost:5001 tcp://localhost:5002 tcp://localhost:5003 &
./zsource 3 tcp://localhost:5001 tcp://localhost:5002 tcp://localhost:5003 &
./zsource 4 tcp://localhost:5001 tcp://localhost:5002 tcp://localhost:5003 &
- 8. 参考
• 官方文档(zguide): http://
zguide.zeromq.org/page:all
• Github 仓库: https://github.com/zeromq/
zeromq2-x
• 云风的介绍: http://blog.codingnow.com/
2011/02/zeromq_message_patterns.html
Editor's Notes
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n