Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ZeroMQ简介

6,077 views

Published on

简介,与 thrift/protobuf 的关系, 基本玩法, 部分参考

Published in: Technology
  • Be the first to comment

ZeroMQ简介

  1. 1. ZeroMQ(ØMQ)简介 高效的并发、 步通信框架
  2. 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. 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 混用
  4. 4. ZMQ 中的模式 类繁多的玩法
  5. 5. 简洁的代码(一)• N:N PUSH/PULL 模 型,数据源• 先初始化一个zmq socket• 用这个socket连接所有 worker• 生成任务、发送消息
  6. 6. 简洁的代码(二)• N:N PUSH/PULL 模 型,接收端• 初始化一个zmq socket• bind 从命令行得到的字 符串• 接收消息,干活
  7. 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. 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
  9. 9. 谢谢

×