NSQ中文文檔:https://wiki.jikexueyuan.com/project/nsq-guide/
一、簡介
NSQ是實時的分布式消息處理平台,其設計的目的是用來大規模地處理每天數以十億計級別的消息。
NSQ具有分布式和去中心化拓撲結構,該結構具有無單點故障、故障容錯、高可用性以及能夠保證消息的可靠性傳遞的特征。
NSQ非常容易配置和部署,且具有最大的靈活性,支持眾多消息協議。
NSQ由3個組件構成:nsqlookupd、nsqd、和nsqadmin。
二、快速開始
1. 安裝
無需安裝,下載解壓即可使用:https://wiki.jikexueyuan.com/project/nsq-guide/installing.html
nsqlookupd、nsqadmin和nsqd都在解壓目錄的bin子目錄,進入該子目錄。
2. 啟動nsqlookupd
nsqlookupd是守護進程,負責管理拓撲信息,提供目錄服務。nsqd節點通過nsqlookupd廣播話題和通道信息,客戶端通過查詢nsqlookupd來發現指定話題的生產者nsqd節點,由此nsqlookupd將消費者與生產者解耦開。
nsqlookupd當前的實現是簡單地返回所有地址。
開放兩個端口,TCP接口使用4160端口,nsqd用它來廣播,HTTP接口使用4161端口,客戶端使用它來執行發現和管理操作。
3. 啟動nsqd
nsqd是一個守護進程,負責接收、排隊、投遞消息給客戶端。
它可以獨立運行,不過通常它是由nsqlookupd實例所在集群配置的,並使用nsqlookupd的4160端口進行話題與通道的廣播。
每個nsqd有一個與nsqlookupd的長期TCP連接,定期推動其狀態(sending heartbeat)。這個數據被nsqlookupd用於給消費者通知nsqd地址。對於消費者來說,一個暴露的HTTP /lookup接口用於輪詢。
nsqd會發送心跳包給客戶端,連續兩個沒有應答則超時關閉連接。
有兩個接口,TCP接口使用4150端口,給客戶端使用,HTTP接口使用4151端口,是HTTP API。同時,它也能在第三個端口監聽HTTPS。
4. 啟動nsqadmin
nsqadmin是一套WEB UI,用來匯集集群的實時統計,並執行不同的管理任務。
它使用nsqlookupd的4161端口來發現nsqd的所有話題與通道,可通過4171端口訪問其可視化界面。
可視化界面:
至此,nsqd的三個組件,nsqlookupd、nsqd和nsqadmin都已啟動完畢,可以開始使用了。
5. 使用curl命令向nsqd推送消息
6. 使用nsq_to_file客戶端將指定話題的消息寫入文件中
nsq_to_file客戶端首次執行時會在指定話題開啟一個名為“nsq_to_file”的通道,用於接收當前話題的所有消息,然后從該通道中獲取消息數據,寫入文件中。
7. 使用nsq_to_nsq客戶端將指定通道的消息發送給另一個話題
注意:這里nsq_to_nsq客戶端指定從“nsq_to_file”通道獲取消息,nsq_to_file客戶端也會從該通道獲取消息,最終“nsq_to_file”通道的消息會被這兩個客戶端隨機消費,每個客戶端都只能得到這個通道上的部分消息。