zeroMQ原始碼分析之網路機制和效能

2021-10-01 11:47:07 字數 549 閱讀 4464

tcp協議是流式傳輸協議,會出現粘包和半包的問題。

解決方案:1.在傳輸資料的時候加入特殊的字元,如http協議  2.採用tlv格式,type,length,value,如二進位制協議

zeromq的msg_t結構

1.短訊息使用記憶體copy比malloc比較高階

2.長訊息使用記憶體malloc比copy高階

zeromq是乙個非同步的套接字

1.對於長和短訊息進行了區分,短訊息採用copy的方式去解決msg的複製,對於長訊息採用分配記憶體

2.zeromq使用者申請記憶體(記憶體池),然後傳指標給zmq核心。

zmq的所有型別的socket都是繼承於socket_base_t的,那麼socket_base_t與session之間是如何通訊的?

所有的socket類都繼承於這個類,每個session建立的時候會建立兩個pipe,其中乙個是inbound pipe,用於socket收訊息的;另乙個是outbound pipe,用於發訊息。這兩個pipe都會bind到socket物件上,bind的意思就是會把pipe新增到socket的fq和lb的兩個物件上

zeromq原始碼分析筆記之架構(1)

zeromq是一種基於訊息佇列的多執行緒網路庫,其對套接字型別 連線處理 幀 甚至路由的底層細節進行抽象,提供跨越多種傳輸協議的套接字。引用雲風的話來說 請求回應模型。由請求端發起請求,並等待回應端回應請求。從請求端來看,一定是一對對收發配對的 反之,在回應端一定是發收對。請求端和回應端都可以是 1...

zeromq原始碼分析筆記之準備(0)

zeromq這個庫主要用於程序通訊,包括本地程序 網路通訊,涉及到一些基礎知識,主要包括管道通訊,socket程式設計的內容,反應器模式 使用io多路復用實現 無鎖佇列這幾塊比較重要的部分,下面的幾個鏈結是這幾塊內容的學習筆記,有了這些知識,能比較好的理解這個開源庫 1 socket原理詳解 2 i...

zeromq原始碼學習 ctx建立

ctx t封裝了與zeromq庫相關的全部全域性狀態。當使用zeromq時,需要呼叫zmq ctx new函式建立乙個ctx t物件,並返回該物件,沒有對context物件進行初始化。其中乙個重要的變數starting,它為true時,表示context建立,但是未建立任何乙個socket物件。當建...