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中的
完