直接解壓後(我的重新命名了nsq-1.2.0):bin目錄裡就會出現一大堆nsq_…開頭的可執行檔案:
上面是結束了nsql的常用使用元件,我們再來回顧下上面的概念問題:
nsqlookupd
看看官方的原話是怎麼說:nsqadminnsqlookupd是守護程序負責管理拓撲資訊。客戶端通過查詢 nsqlookupd 來發現指定話題(topic)的生產者,並且 nsqd 節點廣播話題(topic)和通道(channel)資訊
簡單的說nsqlookupd就是中心管理服務,它使用tcp(預設埠4160)管理nsqd服務,使用http(預設埠4161)管理nsqadmin服務。同時為客戶端提供查詢功能
總的來說,nsqlookupd具有以下功能或特性
唯一性,在乙個nsq服務中只有乙個nsqlookupd服務。當然也可以在集群中部署多個nsqlookupd,但它們之間是沒有關聯的
去中心化,即使nsqlookupd崩潰,也會不影響正在執行的nsqd服務
充當nsqd和naqadmin資訊互動的中介軟體
提供乙個http查詢服務,給客戶端定時更新nsqd的位址目錄
官方原話:是一套 web ui,用來匯集集群的實時統計,並執行不同的管理任務nsqadmin預設的訪問位址是建立乙個channer001主題,並傳送乙個how are you訊息總的來說,nsqadmin具有以下功能或特性
提供乙個對topic和channel統一管理的操作介面以及各種實時監控資料的展示,介面設計的很簡潔,操作也很簡單
展示所有message的數量,恩…裝x利器
能夠在後台建立topic和channel,這個應該不常用到
nsqadmin的所有功能都必須依賴於nsqlookupd,nsqadmin只是向nsqlookupd傳遞使用者操作並展示來自nsqlookupd的資料
官方原話:nsqd 是乙個守護程序,負責接收,排隊,投遞訊息給客戶端這是官方的圖,第乙個channel(meteics)因為有多個消費者,所以觸發了負載均衡機制。後面兩個channel由於沒有消費者,所有的message均會被快取在相應的佇列裡,直到消費者出現簡單的說,真正幹活的就是這個服務,它主要負責message的收發,佇列的維護。nsqd會預設監聽乙個tcp埠(
4150)和乙個http埠(4151
)以及乙個可選的https埠
總的來說,nsqd 具有以下功能或特性
對訂閱了同乙個topic,同乙個channel的消費者使用負載均衡策略(不是輪詢)
只要channel存在,即使沒有該channel的消費者,也會將生產者的message快取到佇列中(注意訊息的過期處理)
保證佇列中的message至少會被消費一次,即使nsqd退出,也會將佇列中的訊息暫存磁碟上(結束程序等意外情況除外)
限定記憶體占用,能夠配置nsqd中每個channel佇列在記憶體中快取的message數量,一旦超出,message將被快取到磁碟中
topic,channel一旦建立,將會一直存在,要及時在管理臺或者用**清除無效的topic和channel,避免資源的浪費
官方提供了go語言版的客戶端:go-nsq,更多客戶端支援請檢視client libraries。
go get -u github.com/nsqio/go-nsq乙個簡單的生產者示例**如下:
2. 生產者ping
if errping !=nil
producer.setlogger(nulllogger, nsq.loglevelinfo)
//3. 設定不輸出info級別的日誌
for i := 0; i < 5; i++
}producer.stop()
//5. 生產者停止執行
}func main()
建立消費者的方式有兩種,一種是通過http請求來發現nsqd生產者和配置的topic,另一種是直接使用tcp請求來連線本地例項 。
示例**如下所示:
//2. 新增處理訊息的方法
q.addhandler(nsq.handlerfunc(func(message *nsq.message) error ))
//3. 通過http請求來發現nsqd生產者和配置的topic(推薦使用這種方式)
lookupaddr := string
err :=q.connecttonsqlookupds(lookupaddr)
if err !=nil
//4. 接收消費者停止通知
//5. 獲取統計結果
stats :=q.stats()
fmt.sprintf(
"message received %d, finished %d, requeued:%s, connections:%s",
stats.messagesreceived, stats.messagesfinished, stats.messagesrequeued, stats.connections)
}func main()
將上面的**編譯執行,然後在終端輸入後效果如下:
使用瀏覽器開啟可以檢視到類似下面的頁面: 在下面這個頁面能看到當前的topic
資訊:
LDAP介紹和使用ACL示例
決定了將要應用訪問控制的條目和屬性。條目通常通過兩種方式選定 通過dn或者通過過濾器。下面的示例通過dn選擇條目 to to dn to dn.第一種格式用於選擇所有的條目。第二種格式用於選擇標準化的dn與所給正規表示式相匹配的條目 第二種格式不會在本文件中深入討論 第三種格式用語選擇在所請求的dn...
MySQL示例介紹
1.將mysql資料庫中的資料加表結構匯出 mysqldump uroot p h127.0.0.1 dt test d db test.sql 2.將mysql資料庫中的表結構加儲存過程匯出 mysqldump uroot d r h127.0.0.1 db test d db proc.sql ...
makefile介紹及示例
乙個開發工程會有很多的原始檔,它們按型別 功能 模組分別放在若干個目錄中,makefile定義了一系列的規則來指定,哪些檔案需要先編譯,哪些檔案需要後編譯,哪些檔案需要重新編譯等。makefile檔案關係到整個工程的編譯規則。寫好的makefile,只要執行make命令,就會按makefile裡定義...