blueice 发表于 2018-1-4 09:13:45

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

push/pull模式
  push/pull模式,这是一个什么模式呢?战争时期,食物紧缺,实行配给制,大家都排好队,有人专门发放食物,前一个人领取了食物,后一个人跟上继续领取食物,这个push端就是发放食物的,pull端就是领取食物的,所不同的是,现实中,你领取完了食物就不能排队等候了,但zmq的push/pull模式中,一个pull端领取完了食物,可以继续排队等待push端发放食物。
https://images2015.cnblogs.com/blog/917108/201703/917108-20170323141942205-2127892882.png
  我们发送出一条信息的时候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) 
  
页: [1]
查看完整版本: saltstack系列(四)——zmq Paraller Pipeline模式