nsqlookupd 是守護(hù)進(jìn)程負(fù)責(zé)管理拓?fù)湫畔ⅰ?蛻舳送ㄟ^查詢 nsqlookupd 來發(fā)現(xiàn)指定話題(topic)的生產(chǎn)者,并且 nsqd 節(jié)點(diǎn)廣播話題(topic)和通道(channel)信息。
有兩個(gè)接口:TCP 接口,nsqd 用它來廣播。HTTP 接口,客戶端用它來發(fā)現(xiàn)和管理。
-http-address="0.0.0.0:4161": <addr>:<port> 監(jiān)聽 HTTP 客戶端
-inactive-producer-timeout=5m0s: 從上次 ping 之后,生產(chǎn)者駐留在活躍列表中的時(shí)長
-tcp-address="0.0.0.0:4160": TCP 客戶端監(jiān)聽的 <addr>:<port>
-broadcast-address: 這個(gè) lookupd 節(jié)點(diǎn)的外部地址, (默認(rèn)是 OS 主機(jī)名)
-tombstone-lifetime=45s: 生產(chǎn)者保持 tombstoned 的時(shí)長
-verbose=false: 允許輸出日志
-version=false: 打印版本信息
返回某個(gè)話題(topic)的生產(chǎn)者列表。
參數(shù):
topic - the 話題(topic) to list producers for
返回所有已知的話題(topic)
返回已知話題(topic)里的通道(channel)
參數(shù):
topic - the topic to list 通道(channel)s for
返回所有已知的 nsqd 列表
刪除一個(gè)已存在的話題(topic)
參數(shù):
topic - 需要?jiǎng)h除的話題(topic)
刪除一個(gè)已存在話題(topic)的通道(channel)
參數(shù):
topic - 已經(jīng)存在的話題(topic)
channel - 將要?jiǎng)h除的通道(channel)
邏輯刪除(Tombstones)某個(gè)話題(topic)的生產(chǎn)者。參見 deletion and tombstones.
參數(shù):
topic - 已經(jīng)存在的話題(topic)
node - 將要邏輯刪除(tombstones)的生產(chǎn)者(nsqd) (通過 <broadcast_address>:<http_port> 識別)
監(jiān)控端點(diǎn),必須返回 OK
返回版本信息
當(dāng)一個(gè)話題(topic)不再全局生產(chǎn),相對簡單的操作是從集群里清理這個(gè)消息。假設(shè)所有的應(yīng)用生產(chǎn)的消息下降,使用 /delete_topic 結(jié)束nsqlookupd 實(shí)例的,是必須要完成的操作。(內(nèi)部來說,它將會識別 nsqd 生產(chǎn)者,并對這些節(jié)點(diǎn)執(zhí)行合適的操作)。
全局來看,通道(channel)刪除進(jìn)程都很類似,不同點(diǎn)是你需用 /delete_channel 結(jié)束 nsqlookupd 實(shí)例,并且你必須保證所有的訂閱了通道(channel)得消費(fèi)者已經(jīng)下降(downed)。
然而,當(dāng)話題(topic)不再在節(jié)點(diǎn)的子集上生產(chǎn)的時(shí)候情況比較復(fù)雜。因?yàn)橄M(fèi)者查詢 nsqlookupd 的方法并且連接到所有生產(chǎn)者,你加入的競爭環(huán)境嘗試移除集群的信息,消費(fèi)者發(fā)現(xiàn)這些節(jié)點(diǎn)并重新連接。(因此推送更新,話題(topic)仍然在節(jié)點(diǎn)上生產(chǎn))。解決辦法就是邏輯刪除(tombstones)。邏輯刪除(tombstones)在 nsqlookupd 上下文是特定的生產(chǎn)者和最后的配置 --tombstone-lifetime 時(shí)間。在這個(gè)窗口中,生產(chǎn)者不會在 /lookup 查詢中列出,允許節(jié)點(diǎn)刪除話題(topic),擴(kuò)散這些信息到 nsqlookupd(接著邏輯刪除(tombstoned)生產(chǎn)者),并阻止生產(chǎn)者重新發(fā)現(xiàn)這個(gè)節(jié)點(diǎn)。