1. 程式人生 > >【訊息佇列】ZMQ概述

【訊息佇列】ZMQ概述

ZMQ的官方網址:www.zeromq.org

前言

引用官方的說法: “ZMQ(以下ZeroMQ簡稱ZMQ)是一個簡單好用的傳輸層,像框架一樣的一個socket library,他使得Socket程式設計更加簡單、簡潔和效能更高。是一個訊息處理佇列庫,可在多個執行緒、核心和主機盒之間彈性伸縮。ZMQ的明確目標是“成為標準網路協議棧的一部分,之後進入Linux核心”。

三種通訊模式

ZMQ提供了三個基本的通訊模型,分別是“Request-Reply “,”Publisher-Subscriber“,”Parallel Pipeline”。

1. Request-Reply

請求相應這種是我們最常見的,也是我們經常編寫的socket程式。寫一個server端監聽某一埠,如有訊息傳來則對其分析並作出響應;同時,存在client端,它連結server端,傳送服務請求。這就跟到報亭買報一樣,報亭就是server端,讀者就是client,要想看報就得去報亭買。


2. Publisher-Subscriber

什麼是釋出訂閱模式呢?理論上去理解可以參照設計模式中的訂閱者模式。還是報亭賣報,現在報亭升級了,提供訂報功能,只要你在此登記,那麼你就每天在家裡等著就可以了。一旦有了新的資訊,報亭就送來了。


3. Parallel Pipeline

在分散式計算中,我們經常遇到這樣一種情況,我們希望把一批資料分發到不同的處理單元,有他們分別處理,處理完之後再彙集起來,parallel pipeline就是幹這個的。task ventilator使用的是SOCKET_PUSH,將任務分發到Worker節點上。而Worker節點上,使用SOCKET_PULL從上游接受任務,並使用SOCKET_PUSH將結果彙集到Slink。值得注意的是,任務的分發的時候也同樣有一個負載均衡的路由功能,worker可以隨時自由加入,task ventilator可以均衡將任務分發出去。


引:

http://www.kuqin.com/algorithm/20120813/328769.html