saltstack系列(四)——zmq Paraller Pipeline模式

push/pull模式

  push/pull模式,这是一个什么模式呢?战争时期,食物紧缺,实行配给制,大家都排好队,有人专门发放食物,前一个人领取了食物,后一个人跟上继续领取食物,这个push端就是发放食物的,pull端就是领取食物的,所不同的是,现实中,你领取完了食物就不能排队等候了,但zmq的push/pull模式中,一个pull端领取完了食物,可以继续排队等待push端发放食物。

我们发送出一条信息的时候worker会进行分配,按照分配进行转发

 上代码,Ventilator端

#coding:utf-8

import zmq

print("这是发送端,我的ip和端口是127.0.0.1:8001")
cont = zmq.Context()

sock = cont.socket(zmq.PUSH)
sock.bind("tcp://127.0.0.1:8001")
while True:
	data = raw_input(">>>")
	sock.send(data)

Sink端

#coding:utf-8

import zmq

print("这是接收端,我的ip和端口是127.0.0.1:8000")
cont = zmq.Context()

sock = cont.socket(zmq.PULL)
sock.bind("tcp://127.0.0.1:8002")
while True:
	recv = sock.recv()
	print(recv)

Worker

#coding:utf-8
import zmq

print("I am worker 1")

cont = zmq.Context()

recv_sock = cont.socket(zmq.PULL)
recv_sock.connect("tcp://127.0.0.1:8001")

send_sock = cont.socket(zmq.PUSH)
send_sock.connect("tcp://127.0.0.1:8002")

while True:
	recv = recv_sock.recv()
	send_sock.send(recv)
	print("worker 1 is worked,it's content is %s"%recv) 
原文地址:https://www.cnblogs.com/yezl/p/6604868.html