NATS_09:NATS常見問題說明


1. Request() 和 Publish() 之間的不同

  Publish()發送一條消息到 gnatsd 服務,是使用它的地址作為一個 主題(subject),而 gnatsd 交付消息給所有注冊了此 主題(subject) 的訂閱者。可選地是,你還可以發送帶 reply subject 的消息到gnatsd 服務,這種方式為 訂閱者 提供了接收消息並返回一條消息給 發布者 的方法。 
  Request()是一個簡單方便的API,它提供了一個偽同步的方式,使用了超時timeout配置。它創建了一個收件箱(收件箱是一種 主題(subject) 類型,對請求者唯一),訂閱主題(subject),然后發布你的請求消息(消息帶reply地址)設置為收件箱的主題(subject),然后等待響應,或者超時取消。

2. 多個訂閱者可以接收一個請求嗎?

  可以。NATS是一個 發布/訂閱 系統,它還有分布式隊列的基礎,這是基於每一個訂閱者。當你發布一條消息時,在請求的開始,每一個訂閱者都會收到消息。如果訂閱者形成了一個隊列組,那么NATS將會隨機選擇一個訂閱者來接收消息,此時要注意,請求者不知道也沒法控制這個消息。

3. 怎樣監控NATS集群

  比較常用的有兩個選擇。 
  * nats-top 
  https://github.com/nats-io/nats-top    類似於top的監控工具 (這個不用多說,使用 go get 直接安裝即可)
  * natsboard 
  https://github.com/cmfatih/natsboard
  一個帶有界面和圖形的監控軟件,是由nodejs開發,在使用的時候需要安裝nodejs

  這里還是簡單點說明一下吧:

  我的環境是mac pro,去官網下載最新版的nodejs安裝包即:node-v7.8.0.pkg,我的百度網盤地址:https://pan.baidu.com/s/1jHQ1zGq

  或者直接去官網下載:NodeJs官網

  之后傻瓜式的下一步即可安裝完畢。那么這個時候我們就需要使用 npm(node package manage)進行項目安裝:

  npm install natsboard -g

   如果提示錯誤信息,你看一下應該是需要root權限才可以執行,安裝完畢之后,我們就可以使用這個服務對我們的NATS服務進行實時監控了。這里有個要求就是在啟動 NATS 服務的時候必須帶有 -m 的參數啟動,因為 -m 參數代表開啟監控端口,否則是無法進行監控的(說明:因為NATS默認監控端口為8222,所以natsboard默認啟動也是直接監聽的端口為8222,如果指定了其他端口,那么啟動 natsboard 服務的時候就不能默認啟動了)

gnatsd -m 8222
natsboard

 不是默認端口啟動,需要運行以下命令:

gnatsd -m 12345
natsboard --nats-mon-url http://localhost:12345

啟動完畢之后,服務默認端口為 3000, 則打開瀏覽器訪問:http://localhost:3000,即可進入監控主界面

4. NATS是否做了排隊?是否做了負載均衡?

  “排隊Queueding” 這個術語在不同的上下文有不同的意思,必須仔細區分其用法。NATS實現了不支持持久化的分布式隊列——通過訂閱者的隊列組(Queue Group)實現的。訂閱者隊列組提供了消息交付形式的負載均衡,主題(subject) 訂閱既可以是“個體”訂閱,又可以是隊列組訂閱。在創建訂閱時,選擇加入一個隊列組,通過提供一個可選的隊列組名。對於個體的 主題(subject) 訂閱,gnatsd服務會嘗試交付該 主題(subject) 后續的每一條消息副本給每一個訂閱者。而對於隊列組的訂閱,gnatsd 會嘗試交付該 主題(subject) 后續的每一條消息給組中的任意一個訂閱者,這個選擇是隨機的。分布式隊列的這種交付形式是實時執行的,消息是不會持久化到二級存儲中。此外,交付是基於 興趣圖(interest graph)—— 即訂閱,所以它不是發布者的操作,而是完全受 gnatsd 的控制。

5. 可以列出現有的NATS集群的主題(subject)嗎?

  NATS維護是不斷實時更新興趣圖(包括主題 和 主題的訂閱者)這個興趣圖是動態的,會隨着發布者和訂閱者的不斷變化而變化。如果要決定收集這個信息,可以間接地在任意時間點上獲取監控點的 /connz 和 /routez 的信息。(具體這些信息代表什么,請看我前面寫的系列博客)

6. NATS支持主題(subject)的通配符嗎?

  支持。有效的通配符如下: 
  圓點“.” 是token的分隔符;星號“*” 是token的通配符。比如: 
    foo.* 匹配 foo.bar、foo.baz,但是不匹配 foo.bar.baz 
  大於符號“>” 是一個完整的通配符匹配。比如: 
    foo.> 匹配 foo.bar、foo.baz、foo.bar.baz、foo.bar.1

7. NATS是否限制了消息的尺寸

  NATS強制服務器和客戶端在建立連接設置時限制消息的尺寸。目前這個限制是1MB。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM