【訊息佇列】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