nsq是一個使用go語言實現(xiàn)的分布式實時消息傳遞平臺,每天處理消息量可達十億級別。具有分布式、去中心化拓撲、無單點故障、故障容錯,高可用性以及能夠保證消息的可靠傳遞的功能特征。
組件構成
nsq有三個組件以及輔助的幾個工具構成。
nsqd :守護進程,負責接收,排隊,投遞消息給客戶端??瑟毩⑦\行,通常它是由 nsqlookupd 實例所在集群配置。服務啟動后監(jiān)聽兩個端口,一個給客戶端的默認4160,另一個是 HTTP API的默認4161,也能開HTTPS。
同一臺服務器啟動多個nsqd,要注意端口和數(shù)據(jù)路徑必須不同,包括:–lookupd-tcp-address、 -tcp-address、–data-path。
刪除topic、channel需要http api調(diào)用。
nsqlookupd
nsqlookupd 是守護進程,負責管理拓撲信息并提供最終一致性的發(fā)現(xiàn)服務??蛻舳送ㄟ^查詢 nsqlookupd 來發(fā)現(xiàn)指定話題(topic)的生產(chǎn)者,并且 nsqd 節(jié)點廣播話題(topic)和通道(channel)信息。
該服務運行后有兩個端口:TCP 接口,nsqd 用它來廣播;HTTP 接口,客戶端用它來發(fā)現(xiàn)和管理。
在生產(chǎn)環(huán)境中,為了高可用,最好部署三個nsqlookupd服務。
nsqadmin
nsqadmin 是一套 WEB UI,用來匯集集群的實時統(tǒng)計,并執(zhí)行不同的管理任務。
運行后,能夠通過4171端口查看并管理topic和channel。
通常只需要運行一個。
utilities
常見基礎功能、數(shù)據(jù)流處理工具,如nsq_stat、nsq_tail、nsq_to_file、nsq_to_http、nsq_to_nsq、to_nsq
nsqlookupd
命令:nohup nsqlookupd >nsqlookupd.log 2>&1&
端口:tcp 4160 http 4161
nsqd
命令:nohup nsqd --lookupd-tcp-address=0.0.0.0:4160 >nsqd1.log 2>&1&
端口:tcp 4150 http 4151(指定端口:-tcp-address="0.0.0.0:4152" -http-address="0.0.0.0:4153" )
連接 : tcp 4160(lookupd的tcp)
nsqadmin
命令:nohup nsqadmin --lookupd-http-address=0.0.0.0:4161 > nsqadmin.log 2>&1&
端口:http 4171(web管理頁面)