NSQ端口關係以及注意事項

0.相關參考文章:golang

官網:https://nsq.io/sql

golang實戰-nsq集羣入門與坑架構

nsq系統架構curl

NSQ消息隊列tcp

 

 

1.啓動命令工具

①nsqlookupd測試

②nsqd -lookupd-tcp-address=xxx.xxx.xxx.xxx:4160  -broadcast-address=xxx.xxx.xxx.xxx -max-msg-size=50000000 -data-path=your save data pathurl

這裏須要注意:xxx.xxx.xxx.xxx爲對外ip地址spa

-broadcast-address:若是須要外網訪問,必須設置這個參數爲對外ip地址。(當在同一臺機器上開多個nsqd的狀況下須要設置成不同的).net

-max-msg-size:設置單條消息的最大字節數,若是消息超過這個字節數將被丟棄。

-data-path:數據存儲路徑(當在同一臺機器上開多個nsqd的狀況下須要設置成不同的)

③nsqadmin -lookupd-http-address=xxx.xxx.xxx.xxx:4161

 

2.端口相關

①外網訪問必須開放4150(TCP Producer),4151(HTTP Producer),4160,4161,4171(管理頁面)四個端口

②nsqlookupd 監聽兩個端口: 

4160 TCP 用於接收nsqd的廣播,記錄nsqd的地址以及監聽TCP/HTTP端口等。
4161 HTTP 用於接收客戶端發送的管理和發現操做請求(增刪話題,節點等管理查看性操做等)。當Consumer進行鏈接時,返回對應存在Topic的nsqd列表。

 

③nsqd監聽兩個端口: 

4151 HTTP Producer使用HTTP協議的curl等工具生產數據;Consumer使用HTTP協議的curl等工具消費數據;
4150 TCP Producer使用TCP協議的nsq-j等工具生產數據;Consumer使用TCP協議的nsq-j等工具消費數據;

 

④nsqadmin監聽一個端口 
4171 HTTP 用於管理頁面

使用地址http://xxx.xxx.xxx.xxx:4171打開管理頁面

 

3.下面的示意圖清晰的展現了整個NSQ架構的端口關係:

(1)單點

流程說明:

①Consumer1首先使用HTTP鏈接nsqlookupd的4161端口,獲取Topic1相關nsqd的TCP4150端口。

②使用TCP鏈接到nsqd的4150端口,並生成對應的Channel1;

特別須要注意的是,當所需Topic不變的狀況下,就算nsqlookupd和nsqadmin進程都殺掉,也不影響nsqd的生產和消費。

 

(2)集羣

 

說明:

①當開啓多個nsqd才存在集羣的意義。

②儘可能避免多個nsqd存在相同的Topic。若是多個nsqd真的存在相同的Topic的狀況下,經過nsqlookupd將會返回全部這個Topic的IP並都能進行讀取處理。(使用nsq-j進行過測試驗證。)

 

4.Channel相關

 

其實主要有兩個點:

①多個Consumer消費同一個Topic和同一個Channel:將會輪訓,按序分配給就緒(當前無處理任務)的消費者。所以,多消費者狀況下,沒法保證有序執行。(像上面動圖的"metrics"所示)

②多個Consumer消費同一個Topic和不一樣的Channel:將會將同一個數據同時到不一樣的Channel中。(像上面動圖的三個Channel所示)

注意:Consumer與Topic沒有直接聯繫,而是經過具體的Channel接受數據。若是Consumer退出,Channel不會自動刪除。 若是再也不須要,須要經過http端口刪除Channel,不然極可能會致使磁盤空間不足。

 

以上。

相關文章
相關標籤/搜索