NanoMsg框架|NanoMsg的簡介

  • 2020 年 2 月 25 日
  • 筆記

寫在最前

最近由於新冠狀肺炎病毒的影響,過年期間一直呆在家裡,除了基本購買生活必須品外,可以說是足不出戶了,在家閑久了自己也是想找點事做,所以最近也一直在研究NanoMsg框架,主要是公司的一些項目中已經使用這個通訊框架了,本身nanomsg相比Rabbit MQ什麼的也輕量。

在C#中通過NuGet中使用也非常簡單,但是項目中也部分用到了Android的手持設備,搜了搜android裡面沒有現成的nanomsg可用,必須自己編譯nanomsg的源碼再進行封裝,所以準備把Nanomsg作為一個系列,整體都學習一下,除了簡介外,還有C#中的使用,及Android中怎麼編譯nanomsg的源碼生成so庫,及調用nanomsg與C#的通訊。

廢話就不再多說了,直接開始今天NanoMsg的主題。

NanoMsg簡介

微卡智享

NanoMsg是一個Socket的通訊庫,使語C語言編寫實現的,這樣就可以適用於多種作業系統,而且幾乎不需要什麼依賴,可擴展並且能易於使用。

Nanomsg提供了幾種常見的通訊模式(也稱為「可擴展性協議」)是構建分散式系統的基本框架。通過組合它們,可以創建廣泛的分散式應用程式。

可擴展性協議類型

類型

說明

PAIR

簡單的一對一溝通

BUS

簡單的多對多通訊

REQREP

允許構建無狀態集群來處理用戶請求

PUBSUB

將消息分發給訂閱消息的用戶‍

PIPELINE

匯總來自多個來源的消息,並在許多目的點之間進行負載平衡

SURVEY

允許一次查詢多個應用程式的狀態

PAIR模式

簡單的一對一溝通,Client1隻能同時連接Client2,通訊時的send是不阻塞的,而recv是阻塞的,直到recv超時或者接到到對方的send。

BUS

簡單的多對多通訊,在此模式中,消息被發送到每個直接連接的對等點。

REQREP

允許構建集群的無狀態服務來處理用戶請求。每個req請求都需要rep響應,類似http協議(一應一答)。

PUBSUB

發布者向訂閱者推送消息。只有訂閱該頻道的訂閱者才能收到該頻道的消息。

PIPELINE

聚合來自多個來源的消息,並在多個目的地之間進行負載平衡。Client1隻能send,Client2隻能recv。

SURVEY

查詢多個應用的狀態。這種模式對於服務發現和投票演算法非常有用。

支援的傳輸機制

微卡智享

名稱

說明

INPROC

進程內的傳輸(執行緒,模組等之間)

IPC

在單個機器上的進程間傳輸

TCP

通過TCP的網路傳輸

NanoMsg源碼地址

微卡智享

https://github.com/nanomsg/nanomsg.git

上面就是NanoMsg的簡單介紹,後面我會開始介紹NanoMsg的具體使用方法,主要是C#和Android中的