NSQ端口關系以及注意事項


0.相關參考文章:

官網:https://nsq.io/

golang實戰-nsq集群入門與坑

nsq系統架構

NSQ消息隊列

 

 

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 path

這里需要注意:xxx.xxx.xxx.xxx為對外ip地址

-broadcast-address:如果需要外網訪問,必須設置這個參數為對外ip地址。(當在同一台機器上開多個nsqd的情況下需要設置成不一樣的)

-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,否則很可能會導致磁盤空間不足。

 

以上。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM