zz 史上最快訊息核心 ZeroMQ

2021-09-08 21:42:31 字數 3490 閱讀 9435

zeromq是乙個很有個性的專案,它原來是定位為「史上最快訊息佇列」,所以名字裡面有「mq」兩個字母,但是後來逐漸演變發展,慢慢淡化了訊息佇列的身影,改稱為訊息核心,或者訊息層了。從網路通訊的角度看,它處於會話層之上,應用層之下,有了它,你甚至不需要自己寫一行的socket函式呼叫就能完成複雜的網路通訊工作。

借用官方的例子:

客戶端(傳送n個「hello」訊息到服務端,接受回應):

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

//

//  hello world client

//  connects req socket to tcp://localhost:5555

//  sends "hello" to server, expects "world" back

//

#include

#include

#include

#include

intmain ()

zmq_close (requester);

zmq_term (context);

return0;

}

服務端(接收客戶端的訊息,返回「world」給客戶端):

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

//

//  hello world server in c++

//  binds rep socket to tcp://*:5555

//  expects "hello" from client, replies with "world"

//

#include

#include

#include

#include

intmain ()

return0;

}

乙個套接字相關的呼叫都沒有,乙個網路程式就寫好了,生活真美好啊。

與其他的訊息佇列相比,zeromq有以下一些特點

1.點對點無中間節點。

傳統的訊息佇列都需要乙個訊息伺服器來儲存**訊息。而zeromq則放棄了這個模式,把側重點放在了點對點的訊息傳輸上,並且(試圖)做到極致。以為訊息伺服器最終還是轉化為伺服器對其他節點的點對點訊息傳輸上。zeromq能快取訊息,但是是在傳送端快取。zeromq裡有水位設定的相關介面來控制快取量。當然,zeromq也支援傳統的訊息佇列(通過zmq_device來實現)。

2.強調訊息收發模式。

在點對點的訊息傳輸上zeromq將通訊的模式做了歸納,比如常見的訂閱模式(乙個訊息發多個客戶),分發模式(n個訊息平均分給x個客戶)等等。下面是目前支援的訊息模式配對,任何一方都可以做為服務端。

3.以統一介面支援多種底層通訊方式(執行緒間通訊,程序間通訊,跨主機通訊)。

如果你想把本機多程序的軟體放到跨主機的環境裡去執行,通常要將ipc介面用套接字重寫一遍。非常麻煩。而有了zeromq就方便多了,只要把通訊協議從"ipc:///***"改為"tcp://*.*.*.*:****"就可以了,其他**通通不需要改,如果這個是從配置檔案裡讀的話,那麼程式就完全不要動了,直接複製到其他機器上就可以了。以為zeromq為我們做了很多。

4.非同步,強調效能。

zeromq設計之初就是為了高效能的訊息傳送而服務的,所以其設計追求簡潔高效。它傳送訊息是非同步模式,通過單獨出乙個io執行緒來實現,所以訊息傳送呼叫之後不要立刻釋放相關資源哦,會出錯的(以為還沒傳送完),要把資源釋放函式交給zeromq讓zeromq發完訊息自己釋放。

目前zeromq還不是非常成熟(本文寫作時最新版是2.0.10版),設計上還有一點點小缺陷,比如不能得到客戶端的ip,丟訊息等。不過,開發很活躍,很有潛力。另外,zeromq配合protocol buffer使用真是絕了。

官方的教程寫的非常詳細:大家可以去看看。

史上 最快Oauth2學習教程 認證及接入

用oauth2接入許可權系統的朋友越來越多,而且通用性比較好,這裡為了讓大家能夠快速地進行學習和使用,特提供教程乙份。spring boot 2.2.0.m5 spring cloud hoxton.m2 spring cloud oauth2 2.2.0.m2 springboot org.spr...

史上最優秀的,最快的編輯器VIM(上古神器)

給大家介紹一下非常優秀的一款編輯器vim,它誕生於視覺化介面之前,的一款非常古老的編輯神器,那會兒都是黑乎乎的命令視窗,滑鼠的都沒有 vim可以解放我們一直抓著滑鼠的手,因為vim提供了足夠多的快捷鍵,可以實現滑鼠的所有功能,而且比滑鼠更快,更靈活 vim只是我們的輔助編輯工具而已,所以還得依賴目前...

明朝是中國歷史上最有骨氣的王朝? ZZ

linked from 有人對明朝極盡汙衊之能事,好象明朝是最不中用的朝代。其實,只要細心比較,就會發現明朝實為歷史上最有骨氣的王朝!和號稱最強大的漢 唐比,明朝亦毫無愧色!長期為明朝邊患的是蒙古,而漢則是匈奴。老糊塗們總是津津樂道明英宗在土木堡被俘,可是漢高祖當年也被匈奴兵圍在白登山七天七夜!最後...