ZeroMQ(1)——三个基本模型

ZeroMQ(1)——三个基本模型

官方文档
我自己使用zeromq,但是其实对zeromq,并不是很了解,对于zeromq,具体解决什么问题也是不太清楚。项目中将zeromq用作一个消息队列。

引用他人的一段总结:

引用官方的说法: “ZMQ (以下 ZeroMQ 简称 ZMQ)是一个简单好用的传输层,像框架一样的一个socket library,他使得Socket编程更加简单、简洁和性能更高。是一个消息处理队列库,可在多个线程、内核和主机盒之间弹性伸缩。ZMQ 的明确目标是“成为标准网络协议栈的一部分,之后进入 Linux 内核”。现在还未看到它们的成功。但是,它无疑是极具前景的、并且是人们更加需要的“传统”BSD 套接字之上的一层封装。ZMQ 让编写高性能网络应用程序极为简单和有趣。”

近几年有关”Message Queue”的项目层出不穷,知名的就有十几种,这主要是因为后摩尔定律时代,分布式处理逐渐成为主流,业界需要一套标准来解决分布式计算环境中节点之间的消息通信。几年的竞争下来,Apache 基金会旗下的符合 AMQP/1.0标准的 RabbitMQ 已经得到了广泛的认可,成为领先的 MQ 项目。

与 RabbitMQ 相比,ZMQ 并不像是一个传统意义上的消息队列服务器,事实上,它也根本不是一个服务器,它更像是一个底层的网络通讯库,在 Socket API 之上做了一层封装,将网络通讯、进程通讯和线程通讯抽象为统一的 API 接口。

其实zeromq所处理的就是使用网络通信来实现一个消息队列,用于系统,进程,线程之间的通信。其是对于socket的一层封装,类似于ACE。

ZeroMQ的几种基本模型

模型一:请求响应模型(Request-Reply)

请求响应模型是一个最基本的服务器/客户端socket通信模型:

这里写图片描述

服务器端代码:

#   Hello World server in Python
#   Binds REP socket to tcp://*:5555
#   Expects b"Hello" from client, replies with b"World"
#

import time
import zmq

context = zmq.Context()
socket = context.socket(zmq.REP)    #创建的socket类型需要定义好,zmq.REP,响应型
socket.bind("tcp://*:5555")    #绑定端口,其实也就是bind&listen

while True:
    #  Wait for next request from client
    message = socket.recv()            #阻塞型的
    print("Received request: %s" % message)

    #  Do some 'work'
    time.sleep(1)

    #  Send reply back to client
    socket.send(b"World")

~要理解的是zmq就是对socket进行了一层封装

客户端代码:

#
#   Hello World client in Python
#   Connects REQ socket to tcp://localhost:5555
#   Sends "Hello" to server, expects "World" back
#

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ZeroMQ—指导 由iMatix公司的首席执行官Pieter Hintjens 编写。感谢Bill Desmarais, Brian Dorsey, CAF, Daniel Lin, Eric Desgranges, Gonzalo Diethelm, Guido Goldstein, Hunter Ford, Kamil Shakirov, Martin Sustrik, Mike Castleman, Naveen Chawla, Nicola Peduzzi, Oliver Smith, Olivier Chamoux, Peter Alexander, Pierre Rouleau, Randy Dryburgh, John Unwin, Alex Thomas, rofl0r, Mihail Minkov, Jeremy Avnet, Michael Compton, and Zed Shaw的贡献,也感谢Stathis Sideris,因为Ditaa.。 请对所有的意见和勘误表进行问题跟踪。这个版本覆盖了0MQ2.0的版本,发表于周二2010年11月9日,9时32分19秒。 第一章——基础的东西 修理(fixing)这个世界 怎么解释0MQ?有些人会说它的所有美好的事情。它是类固醇(steroids)上的套接字。它像有路由的邮箱。它很快。别人想分享它的启蒙,当这一切变得越来越明显,人们开始顿悟了。事情变得更简单。再也不复杂了。它打开了人们的思维。其他人喜欢通过做比较的方式来解释。它更小,更简单,但是看起来仍然很熟悉。就我个人而言,我希望回忆起我们为什么要开发0MQ,因为,这是读者们也很想知道的问题。 编程是装扮成艺术的科学,因为我们中的大多数不了解软件的物理过程。如果学过这方面的知识的话,也学的很少。软件的物理过程不是算法,数据结构,语言和抽象。这些只是我们研发,使用,然后扔掉的工具。软件真正的物理过程实际上是人们的思维过程。 ……

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值