
如何解釋ZMQ?有些人會先說一堆ZMQ的好:它是一套用于快速構建的套接字組件;它的信箱系統有超強的路由能力;它太快了!而有些人則喜歡分享他們被ZMQ點悟的時刻,那些被靈感擊中的瞬間:所有的事情突然變得簡單明了,讓人大開眼界。另一些人則會拿ZMQ同其他產品做個比較:它更小,更簡單,但卻讓人覺得如此熟悉。對于我個人而言,我則更傾向于和別人分享ZMQ的誕生史,相信會和各位讀者有所共鳴。
編程是一門科學,但往往會喬裝成一門藝術。我們從不去了解軟件最底層的機理,或者說根本沒有人在乎這些。軟件并不只是算法、數據結構、編程語言、或者抽象云云,這些不過是一些工具而已,被我們創造、使用、最后拋棄。軟件真正的本質,其實是人的本質。
舉例來說,當我們遇到一個高度復雜的問題時,我們會群策群力,分工合作,將問題拆分為若干個部分,一起解決。這里就體現了編程的科學:創建一組小型的構建模塊,讓人們易于理解和使用,那么大家就會一起用它來解決問題。
我們生活在一個普遍聯系的世界里,需要現代的編程軟件為我們做指引。所以,未來我們所需要的用于處理大規模計算的構建模塊,必須是普遍聯系的,而且能夠并行運作。那時,程序代碼不能再只關注自己,它們需要互相交流,變得足夠健談。程序代碼需要像人腦一樣,數以兆計的神經元高速地傳輸信號,在一個沒有中央控制的環境下,沒有單點故障的環境下,解決問題。這一點其實并不意外,因為就當今的網絡來講,每個節點其實就像是連接了一個人腦一樣。
如果你曾和線程、協議、或網絡打過交道,你會覺得我上面的話像是天方夜譚。因為在實際應用過程中,只是連接幾個程序或網絡就已經非常困難和麻煩了。數以兆計的節點?那真是無法想象的。現今只有資金雄厚的企業才能負擔得起這種軟件和服務。
當今世界的網絡結構已經遠遠超越了我們自身的駕馭能力。二十世紀八十年代的軟件危機,弗萊德?布魯克斯曾說過,這個世上沒有銀彈。后來,免費和開源解決了這次軟件危機,讓我們能夠高效地分享知識。如今,我們又面臨一次新的軟件危機,只不過我們談論得不多。只有那些大型的、富足的企業才有財力建立高度聯系的應用程序。那里有云的存在,但它是私有的。我們的數據和知識正在從我們的個人電腦中消失,流入云端,無法獲得或與其競爭。是誰坐擁我們的社交網絡?這真像一次巨型主機的革命。
我們暫且不談其中的政治因素,光那些就可以另外出本書了。目前的現狀是,雖然互聯網能夠讓千萬個程序相連,但我們之中的大多數卻無法做到這些。這樣一來,那些真正有趣的大型問題(如健康、教育、經濟、交通等領域),仍然無法解決。我們沒有能力將代碼連接起來,也就不能像大腦中的神經元一樣處理那些大規模的問題。
已經有人嘗試用各種方法來連接應用程序,如數以千計的IETF規范,每種規范解決一個特定問題。對于開發人員來說,HTTP協議是比較簡單和易用的,但這也往往讓問題變得更糟,因為它鼓勵人們形成一種重服務端、輕客戶端的思想。
所以迄今為止人們還在使用原始的TCP/UDP協議、私有協議、HTTP協議、網絡套接字等形式連接應用程序。這種做法依舊讓人痛苦,速度慢又不易擴展,需要集中化管理。而分布式的P2P協議又僅僅適用于娛樂,而非真正的應用。有誰會使用Skype或者Bittorrent來交換數據呢?
這就讓我們回歸到編程科學的問題上來。想要拯救這個世界,我們需要做兩件事情:一,如何在任何地點連接任何兩個應用程序;二、將這個解決方案用最為簡單的方式包裝起來,供程序員使用。
也許這聽起來太簡單了,但事實確實如此。
二、ZeroMQ簡述ZeroMQ是一種基于消息隊列的多線程網絡庫,其對套接字類型、連接處理、幀、甚至路由的底層細節進行抽象,提供跨越多種傳輸協議的套接字。引用云風的話來說:ZeroMQ 并不是一個對 socket 的封裝,不能用它去實現已有的網絡協議。它有自己的模式,不同于更底層的點對點通訊模式。它有比 tcp 協議更高一級的協議。(當然 ZeroMQ 不一定基于 TCP 協議,它也可以用于進程間和進程內通訊)它改變了通訊都基于一對一的連接這個假設。ZeroMQ 把通訊的需求看成四類。其中一類是一對一結對通訊,用來支持傳統的 TCP socket 模型,但并不推薦使用。常用的通訊模式只有三類:
請求回應模型。由請求端發起請求,并等待回應端回應請求。從請求端來看,一定是一對對收發配對的;反之,在回應端一定是發收對。請求端和回應端都可以是 1:N 的模型。通常把 1 認為是 server ,N 認為是 Client 。ZeroMQ 可以很好的支持路由功能(實現路由功能的組件叫作 Device),把 1:N 擴展為 N:M (只需要加入若干路由節點)。從這個模型看,更底層的端點地址是對上層隱藏的。每個請求都隱含有回應地址,而應用則不關心它。
發布訂閱模型。這個模型里,發布端是單向只發送數據的,且不關心是否把全部的信息都發送給訂閱端。如果發布端開始發布信息的時候,訂閱端尚未連接上來,這些信息直接丟棄。不過一旦訂閱端連接上來,中間會保證沒有信息丟失。同樣,訂閱端則只負責接收,而不能反饋。如果發布端和訂閱端需要交互(比如要確認訂閱者是否已經連接上),則使用額外的 socket 采用請求回應模型滿足這個需求。
管道模型。這個模型里,管道是單向的,從 PUSH 端單向的向 PULL 端單向的推送數據流。
三、源碼包獲取獲取源碼包
ZeroMQ | Download
https://github.com/zeromq/zeromq.org
git clone https://github.com/zeromq/zeromq.org
獲取文檔支持
Distributed Messaging - zeromq
四、編譯安裝獲取源碼包后,解壓后的文件內容為:

sudo apt-get update
tar -zxvf zeromq-4.3.4.tar.gz
./configure
make
sudo make install
sudo ldconfig安裝python支持
#安裝zeromq的Python支持
sudo apt-get install python-pip
sudo pip install pyzmq安裝完畢后,所有的庫都默認在下面位置
/usr/local/lib
程序變異種,連接到這個位置即可。
你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧
分享標題:【ZMQ】jestonTX1-創新互聯
標題來源:http://www.yijiale78.com/article34/ceesse.html
成都網站建設公司_創新互聯,為您提供定制網站、自適應網站、電子商務、標簽優化、App設計、微信公眾號
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯