高性能、非常靈活的網絡通訊庫:zeroMQ

jopen 12年前發布 | 36K 次閱讀 網絡工具包 ZeroMQ

ZMQ是一個開源的、跨語言的、非常簡潔的、非常高性能、非常靈活的網絡通訊庫。它擴展了傳統BSD socket能力,提供簡單的基于消息的通信。zeroMQ不解析消息體,沒有序列化能力,或者說你可以使用任何第三方序列化庫比如google的protocol buffer。

他使得Socket編程更加簡單、簡潔和性能更高。是一個消息處理隊列庫,可在多個線程、內核和主機盒之間彈性伸縮。ZMQ的明確目標是“成為標準網絡協議棧的一部分,之后進入Linux內核”。現在還未看到它們的成功。但是,它無疑是極具前景的、并且是人們更加需要的“傳統”BSD套接字之上的一 層封裝。ZMQ讓編寫高性能網絡應用程序極為簡單和有趣。”

與RabbitMQ相比,ZMQ并不像是一個傳統意義上的消息隊列服務器,事實上,它也根本不是一個服務器,它更像是一個底層的網絡通訊庫,在Socket API之上做了一層封裝,將網絡通訊、進程通訊和線程通訊抽象為統一的API接口。

ZeroMQ交互是面向消息的。它將人們每天為應用程序周而復始地進行的例行消息處理封裝起來。這意味著如果當客戶端套接字發送一條150KB大小的消息時,服務端套接字無需顯式處理任何緩存(buffer)或組幀,即能接接收到一條完整而相同的消息。

ZeroMQ套接字與傳輸協議無關:對于任何協議,只有單一且統一的發送消息和接收消息API。缺省情況下支持進程內通訊、IPC、廣播和TCP。此外,協議間切換非常簡單,僅需更改連接字符串的前綴即可。

ZeroMQ套接字能感知路由和網絡拓撲。因為我們不再需要顯示地管理點對點的連接狀態——在上面我們已經看到,所有這些都已經由 ZeroMQ庫封裝好——所以單個ZeroMQ套接字可以綁定兩個獨立的端口并監聽他們的入站請求消息;也可使用一個API調用向兩個獨立的套接字發送數據。

項目主頁:http://www.baiduhome.net/lib/view/home/1348933567166

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!