2022-06-27 ZMQ

ZeroMQ

套接字通信

傳統(tǒng)Socket編程:所謂套接字(Socket)饶深,就是對網(wǎng)絡中不同主機上的應用進程之間進行雙向通信的端點的抽象酬核。一個套接字就是網(wǎng)絡上進程通信的一端庆捺,提供了應用層進程利用網(wǎng)絡協(xié)議交換數(shù)據(jù)的機制榨汤。從所處的地位來講军掂,套接字上聯(lián)應用進程轮蜕,下聯(lián)網(wǎng)絡協(xié)議棧,是應用程序通過網(wǎng)絡協(xié)議進行通信的接口蝗锥,是應用程序與網(wǎng)絡協(xié)議棧進行交互的接口

  • 1.流套接字(SOCK_STREAM):用于提供面向連接跃洛、可靠的數(shù)據(jù)傳輸服務。使用TCP協(xié)議终议。
  • 2.數(shù)據(jù)報套接字(SOCK_DGRAM):提供一種無連接的服務汇竭。使用UDP協(xié)議。
  • 3.原始套接字(SOCK_RAW):原始套接字與標準套接字(標準套接字指的是前面介紹的流套接字和數(shù)據(jù)報套接字)的區(qū)別在于:原始套接字可以讀寫內(nèi)核沒有處理的IP數(shù)據(jù)包穴张,而流套接字只能讀取TCP協(xié)議的數(shù)據(jù)细燎,數(shù)據(jù)報套接字只能讀取UDP協(xié)議的數(shù)據(jù)。因此皂甘,如果要訪問其他協(xié)議發(fā)送的數(shù)據(jù)必須使用原始套接玻驻。

ZMQ

ZMQ與Socket的區(qū)別是:普通的socket是端到端的(1:1的關系),而ZMQ卻是可以N:M 的關系偿枕,人們對BSD套接字的了解較多的是點對點的連接璧瞬,點對點連接需要顯式地建立連接户辫、銷毀連接、選擇協(xié)議(TCP/UDP)和處理錯誤等嗤锉,而ZMQ屏蔽了這些細節(jié)渔欢,讓你的網(wǎng)絡編程更為簡單。ZMQ用于node與node間的通信档冬,node可以是主機或者是進程膘茎。
ZMQ優(yōu)點:輕量級,跨語言性能好酷誓,時延低披坏。
ZMQ缺點:只是一個網(wǎng)絡庫,不支持持久化盐数。

三種模式

參考博客

應答模式

將一組服務端和一組客戶端相連棒拂,用于遠程過程調(diào)用或任務分發(fā)。
這里使用請求-應答模式實現(xiàn)一個簡單的hello world程序玫氢。
和普通的socket通信一樣帚屉,需要一個客戶端和一個服務器⊙浚客戶端發(fā)送hello攻旦,服務器收到hello后回應world



使用REQ-REP套接字發(fā)送和接受消息是需要遵循一定規(guī)律的∩荩客戶端首先使用zmq_send()發(fā)送消息牢屋,再用zmq_recv()接收,如此循環(huán)槽袄。如果打亂了這個順序(如連續(xù)發(fā)送兩次)則會報錯烙无。類似地,服務端必須先進行接收遍尺,后進行發(fā)送截酷。

發(fā)布訂閱模式

將一組發(fā)布者和一組訂閱者相連,用于數(shù)據(jù)分發(fā)乾戏。
發(fā)布/訂閱模式實現(xiàn)了單向數(shù)據(jù)分發(fā)迂苛,服務端將事件發(fā)送給一組客戶端。



PUB-SUB套接字組合是異步的鼓择≡植浚客戶端在一個循環(huán)體中使用recv ()接收消息,如果向SUB套接字發(fā)送消息則會報錯惯退;類似地,服務端可以不斷地使用send ()發(fā)送消息从藤,但不能再PUB套接字上使用recv ()催跪。
關于PUB-SUB套接字锁蠕,還有一點需要注意:你無法得知SUB是何時開始接收消息的。就算你先打開了SUB套接字懊蒸,后打開PUB發(fā)送消息荣倾,這時SUB還是會丟失一些消息的,因為建立連接是需要一些時間的骑丸。很少舌仍,但并不是零。解決此問題需要在PUB端加入sleep通危。

  • 訂閱者可以連接多個發(fā)布者铸豁,輪流接收消息;
  • 如果發(fā)布者沒有訂閱者與之相連菊碟,那它發(fā)送的消息將直接被丟棄节芥;
  • 如果你使用TCP協(xié)議,那當訂閱者處理速度過慢時逆害,消息會在發(fā)布者處堆積头镊。可以使用閾值(HWM)來保護發(fā)布者魄幕。
  • 從ZeroMQ v3.x開始相艇,當使用(tcp:// or ipc://)連接協(xié)議時,消息的過濾在發(fā)布端纯陨,使用epgm://時坛芽,在訂閱端過濾。在ZeroMQ v2.x中队丝,所有消息的過濾是在訂閱者處進行的靡馁。也就是說,發(fā)布者會向訂閱者發(fā)送所有的消息机久,訂閱者會將未訂閱的消息丟棄臭墨。
基于分布式處理(平行管道模式、推拉模式)
  • worker上游和任務分發(fā)器相連膘盖,下游和結果收集器相連胧弛,這就意味著你可以開啟任意多個worker。但若worker是綁定至端點的侠畔,而非連接至端點结缚,那我們就需要準備更多的端點,并配置任務分發(fā)器和結果收集器软棺。所以說红竭,任務分發(fā)器和結果收集器是這個網(wǎng)絡結構中較為穩(wěn)定的部分,因此應該由它們綁定至端點,而非worker茵宪,因為它們較為動態(tài)最冰。
  • 我們需要做一些同步的工作,等待worker全部啟動之后再分發(fā)任務稀火。這點在ZMQ中很重要暖哨,且不易解決。連接套接字的動作會耗費一定的時間凰狞,因此當一組worker連接到端點篇裁,第一個worker連接成功時,它會一下收到很多任務赡若。所以說达布,如果我們不進行同步,那這些任務根本就不會被并行地執(zhí)行斩熊。
  • 任務分發(fā)器使用PUSH套接字向worker均勻地分發(fā)任務(假設所有的worker都已經(jīng)連接上了)往枣,數(shù)據(jù)在所有連接的節(jié)點之間進行輪詢,這種機制稱為負載均衡粉渠。
  • 結果收集器的PULL套接字會均勻地從worker處收集消息分冈,這種機制稱為公平隊列。
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末霸株,一起剝皮案震驚了整個濱河市雕沉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌去件,老刑警劉巖坡椒,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異尤溜,居然都是意外死亡倔叼,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門宫莱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來丈攒,“玉大人,你說我怎么就攤上這事授霸⊙惭椋” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵碘耳,是天一觀的道長显设。 經(jīng)常有香客問我,道長辛辨,這世上最難降的妖魔是什么捕捂? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任瑟枫,我火速辦了婚禮,結果婚禮上绞蹦,老公的妹妹穿的比我還像新娘力奋。我一直安慰自己,他們只是感情好幽七,可當我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著溅呢,像睡著了一般澡屡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上咐旧,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天驶鹉,我揣著相機與錄音,去河邊找鬼铣墨。 笑死室埋,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼搔预,長吁一口氣:“原來是場噩夢啊……” “哼校摩!你這毒婦竟也來了?” 一聲冷哼從身側響起莲兢,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后搏讶,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡霍殴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年媒惕,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片来庭。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡妒蔚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出巾腕,到底是詐尸還是另有隱情面睛,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布尊搬,位于F島的核電站叁鉴,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏佛寿。R本人自食惡果不足惜幌墓,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一但壮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧常侣,春花似錦蜡饵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至舞肆,卻和暖如春焦辅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背椿胯。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工筷登, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人哩盲。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓前方,卻偏偏與公主長得像,于是被迫代替她去往敵國和親廉油。 傳聞我的和親對象是個殘疾皇子惠险,可洞房花燭夜當晚...
    茶點故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容