(轉)ZeroMQ的模式-Pipeline

Pipeline pattern 管道模式。 socket

這種模式描述的場景是數據被散佈到以管道方式組織的各個節點上。管道的每一步都鏈接一個或多個節點,鏈接多個節點時數據以RR方式往下流。 分佈式

注意是,意味着數據跟發佈模式同樣是單向的。這個模式對應的socket是ZMQ_PUSH和ZMQ_PULL. spa

ZMQ_PUSH

用來向下遊節點發消息。下游多個節點時採起RoundRobin分發,zmq_recv()對於這個socket也是無效的。 ip

與Pub不一樣的是,當下遊節點達到高水位(HWM)或者根本沒有下游節點時,zmq_send()就阻塞了,消息並不丟失。 io

Summary of ZMQ_PUSH characteristics
Compatible peer sockets ZMQ_PULL
Direction Unidirectional
Send/receive pattern Send only
Incoming routing strategy N/A
Outgoing routing strategy Round-robin
ZMQ_HWM option action Block

ZMQ_PULL

下游節點在這個socket上進行zmq_recv(),來收取上游發來的消息。zmq_send()在此socket上是沒有意義的。 table

Summary of ZMQ_PULL characteristics
Compatible peer sockets ZMQ_PUSH
Direction Unidirectional
Send/receive pattern Receive only
Incoming routing strategy Fair-queued
Outgoing routing strategy N/A
ZMQ_HWM option action N/A

總結

流行的map-reduce能夠說就是這樣的模式。數據從頭開始,map到許多節點進行計算,計算結果最終reduce到一處。單向,沒有回頭。 map

事實上,這種模式也多見於並行計算、分佈式計算這些場景中。 queue

這個模式跟pub-sub同樣容易理解,所以也不必再贅述了。 並行

相關文章
相關標籤/搜索