nsq是一個(gè)使用go語言實(shí)現(xiàn)的分布式實(shí)時(shí)消息傳遞平臺(tái),每天處理消息量可達(dá)十億級(jí)別芝发。具有分布式贡茅、去中心化拓?fù)湟曷贰o單點(diǎn)故障、故障容錯(cuò)囱挑,高可用性以及能夠保證消息的可靠傳遞的功能特征醉顽。
組件構(gòu)成
nsq有三個(gè)組件以及輔助的幾個(gè)工具構(gòu)成。
nsqd :守護(hù)進(jìn)程平挑,負(fù)責(zé)接收,排隊(duì)弹惦,投遞消息給客戶端石抡。可獨(dú)立運(yùn)行隐解,通常它是由 nsqlookupd 實(shí)例所在集群配置。服務(wù)啟動(dòng)后監(jiān)聽兩個(gè)端口续徽,一個(gè)給客戶端的默認(rèn)4160纫版,另一個(gè)是 HTTP API的默認(rèn)4161,也能開HTTPS梭伐。
同一臺(tái)服務(wù)器啟動(dòng)多個(gè)nsqd,要注意端口和數(shù)據(jù)路徑必須不同,包括:–lookupd-tcp-address哑梳、 -tcp-address、–data-path。
刪除topic、channel需要http api調(diào)用疾渴。
nsqlookupd
nsqlookupd 是守護(hù)進(jìn)程,負(fù)責(zé)管理拓?fù)湫畔⒉⑻峁┳罱K一致性的發(fā)現(xiàn)服務(wù)敦第。客戶端通過查詢 nsqlookupd 來發(fā)現(xiàn)指定話題(topic)的生產(chǎn)者粟按,并且 nsqd 節(jié)點(diǎn)廣播話題(topic)和通道(channel)信息疼鸟。
該服務(wù)運(yùn)行后有兩個(gè)端口:TCP 接口捌朴,nsqd 用它來廣播洼怔;HTTP 接口左驾,客戶端用它來發(fā)現(xiàn)和管理镣隶。
在生產(chǎn)環(huán)境中,為了高可用诡右,最好部署三個(gè)nsqlookupd服務(wù)安岂。
nsqadmin
nsqadmin 是一套 WEB UI,用來匯集集群的實(shí)時(shí)統(tǒng)計(jì)帆吻,并執(zhí)行不同的管理任務(wù)域那。
運(yùn)行后,能夠通過4171端口查看并管理topic和channel猜煮。
通常只需要運(yùn)行一個(gè)琉雳。
utilities
常見基礎(chǔ)功能、數(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管理頁面)