1. 程式人生 > >Linux安裝及部署NSQ訊息佇列

Linux安裝及部署NSQ訊息佇列

1、NSQ知識點說明 NSQ是一個基於Go語言的開源分散式實時訊息平臺,NSQ可用於大規模系統的實時訊息服務,它的設計目標是為在分散式環境下提供一個強大的去除中心化的分散式服務架構,可以每天處理數以億計的實時訊息 Go語言,據說Go語言在處理高併發方面很強大,至於有多牛逼,我也不知道,大夥自己去google、百度一下吧 2、環境準備 NSQ是由於Go語言開發的,所以在安裝NSQ之前,需要Go語言環境,首先,我們需要去官網下載Go環境 有點麻煩的是,Go網址是需要翻牆才能下載的,作為程式設計師,怎麼能被牆,個人可以推薦兩款免費的翻牆軟體,藍燈、Shadowsocks ,百度安裝就好 選擇自己需要的安裝檔案,下載安裝,NSQ網址不需要翻牆
  • 2.1 go語言環境安裝與配置
(1) 解壓下載的安裝包,tar -zxvf 檔案路徑 (2) 環境變數配置 vim /etc/profile 在檔案後面加入: export GOROOT=/usr/local/go export GOPATH=$GOROOT/bin export PATH=$PATH:$GOPATH 即刻生效profile: source /etc/profile 檢查是否安裝成功: go -version 如果控制檯輸出go的版本號,說明已經安裝成功
  • 2.2 NSQ環境安裝與配置
在linux中安裝部署NSQ,根據官網的栗子,它只會在shell下執行,當shell關閉時,NSQ服務也同時關閉,所以我們這裡的安裝,在官網的栗子上,我們還需要考慮NSQ的程序守護,
確保在shell 關閉(exit)時,程式一直在後臺執行。 可以使用:nohup 你的命令 & (1) 解壓下載的安裝包,同上,進入bin目錄 (2) 開啟一個終端,啟動nsqlookupd nohup ./nsqlookupd & (3)開啟另一個終端,啟動nsqd nohup ./nsqd --lookupd-tcp-address=127.0.0.1 --broadcast-address=伺服器ID & broadcast-address:廣播地址,加上這個地址,消費才能通過這個地址訪問,如果你在自己的電腦上玩,這個東西可以忽略 (4)開啟另一個終端,啟動nsqadmin nohup ./nsqadmin –lookupd-http-address=127.0.0.1:4161 & (5)開啟另一個終端,啟動nsq_to_file ,將訊息寫入/temp檔案的日誌檔案,檔名預設由主題topic+主機+日期時間戳組成 nohup ./nsq_to_file–topic=test–output-dir=/tmp –lookupd-http-address=127.0.0.1:4161 & 這樣,我們nsq的環境安裝和部署就弄好了 (6)使用curl命令釋出一條訊息 curl -d ‘hello world 1’ ‘http://127.0.0.1:4151/put?topic=test 瀏覽器開啟nsqadmin 的統計頁面:http://ip:4171 3、NSQ的四大元件
安裝好了,讓我們來簡單介紹一下NSQ nsqlookupd:管理nsqd節點拓撲資訊並提供最終一致性的發現服務的守護程序 nsqd:負責接收、排隊、轉發訊息到客戶端的守護程序,並且定時向nsqlookupd服務傳送心跳 nsqadmin:nsq的web統計介面,可實時檢視叢集的統計資料和執行一些管理任務 utilities:常見基礎功能、資料流處理工具,如nsq_stat、nsq_tail、nsq_to_file、nsq_to_http、nsq_to_nsq、to_nsq 好吧,這個介紹太官方了,有點難以理解,我們來說點大白話 nsqd 可以看作是一個人。 nsqlookupd 是公安局的戶籍辦。 nsqadmin 是人口普查辦公室。 每產生一個nsqd,都要連到nsqlookupd彙報狀態,及定時傳送心跳包。對應的:每個人出生或者過世,都要到戶籍辦去上戶或銷戶,而平時有生之年,你可能還要偶爾去去戶籍辦,出個戶籍證明之類的。 管理者可以通過nsqadmin來檢視統計資料,同時做一些管理操作。對應的,人品普查的時候,可以通過公安局來檢視,各地區的人口數、性別比例、年齡分佈等等。 例子不太恰當,不過對理解也有些幫助,就放在這裡了。 配一張圖: 四、NSQadmin的web統計 nsq自身提供了一個便於檢視和操作的web介面,可以實時檢視統計資訊和執行一些管理任務。 Topic:主題名稱 empty Queue:清空佇列 Delete Topic : 刪除主題 Pause Topic : 暫停主題 Memory+Disk : 記憶體和磁碟 Messages : 表示訊息總數 channels : 訊息通道 In-Flight :飛行中,即將消費的訊息 Deferred : 延遲訊息 Requeued : 已請求的訊息 Time Out : 超時 Connections : 連線數 nodes介面:
這個頁面可以檢視當前nsqlookupd協調管理的節點列表,以及一些連線資訊,比如埠,連線數,主題和主題數量等等。 五、參考資料