Server端
0.8.0及以上版本:
- 解壓安裝包后替換{nacos.home}/target/nacos-server.jar
- 刪除{nacos.home}/plugins/cmdb/及{nacos.home}/plugins/health/下的所有文件
- 逐台重啟Nacos Server即可
0.8.0以下版本,先升級到1.0.0版本。
Client端
請使用最新的1.1.1版本,修復了1.1.0版本的一個客戶端版本顯示問題。
新增特性
- 灰度配置
- 配置導入導出及配置同步
- 地址服務器模塊
- 服務訂閱者列表
- 自定義實例心跳周期
- Config監聽器優化
- Nacos Go SDK發布
灰度配置
灰度配置指的是指定部分客戶端IP進行新配置的下發,其余客戶端配置保持不變,用以驗證新配置對客戶端的影響,保證配置的平穩發布。灰度配置是生產環境中一個比較重要的功能,對於保證生產環境的穩定性非常重要。在1.1.0中,Nacos 支持了以IP為粒度的灰度配置,具體使用步驟如下:
1、 在配置列表頁面,點擊某個配置的“編輯配置”按鈕:
2、勾選“Beta發布”,在文本框里填入要下發配置的IP,多個IP用逗號分隔:
3、 修改配置內容,點擊“發布Beta”按鈕,即可完成灰度配置的發布:
4、 點擊“發布Beta”后,“發布Beta”按鈕變灰,此時可以選擇“停止Beta”或者“發布”。“停止Beta”表示取消停止灰度發布,當前灰度發布配置的IP列表和配置內容都會刪除,頁面回到正常發布的樣式。“發布”表示將灰度配置在所有客戶端生效,之前的配置也會被覆蓋,同時頁面回到正常發布的樣式:
配置導入導出及配置同步
@KeRan213539
配置管理的另一個常見需求是能夠將一個集群的配置同步到另外一個集群,或者從一個命名空間同步到另外一個命名空間。來自社區的貢獻者KeRan213539貢獻這個非常實用的功能,具體使用步驟如下:
1、 導出查詢結果。可以根據查詢條件,將當期查詢出的所有結果打包為一個文件:
2、 導出選中的配置:
3、 導入配置,可以選擇相同配置的處理策略。
當發現有相同的配置時,會有相應的提示:
同時如果導入的配置文件格式不符合要求,也會有相應的提示:
4、 配置同步,選取想要同步的配置,點擊“克隆”,然后再選擇要同步的目標命名空間,就可以將配置同步到對應的命名空間:
5、 導入導出文件格式說明。均為zip壓縮包,壓縮包內有多個目錄,目錄名為配置的 group,目錄下有具體的文件,文件名為配置的 dataId ,每個文件的內容為配置具體的內容:
地址服務器模塊
@pbting
1.1.0的安裝包列表里多了一個nacos-address-server-1.1.0。這個安裝包的作用是作為地址服務器模塊,單獨部署。關於地址服務器的介紹可以參考Nacos官網地址服務器文章,這里只做一個簡單的說明。
一般中間件產品,客戶端尋址服務端的方式都是在客戶端配置服務端的地址列表,這樣有一個缺點是當服務端的地址發生變動時,客戶端無法實時的感知到,也無法動態調整訪問的服務端集群。而在阿里巴巴的一種比較常見的客戶端尋址服務端的方式是地址服務器。簡單的說就是部署單獨的地址服務器,地址服務器提供接口,獲取相關中間件產品服務端集群的地址。由於地址服務器功能比較單一,因此穩定性比較容易保證。客戶端只需要配置地址服務器的域名,通過地址服務器獲取想要訪問的中間件的集群地址,這樣既保證能夠感知中間件集群的動態變化,也能夠為客戶端配置更靈活的集群訪問策略。
下面介紹地址服務器模塊的使用。
-
部署地址服務器
- 將安裝包列表里的 nacos-address-server.tar.gz 或者 nacos-address-server.zip 解壓。
- 單機模式啟動:執行 sh bin/startup.sh -m standalone -s nacos-address 以 standalone 的方式啟動 address server。
- 集群模式啟動:在 conf 目錄下 將 cluster.conf.example 重名名為 cluster.conf,然后加入其它 server 的節點。加完后,執行 sh bin/startup.sh -s nacos-address 即可。
- 配置地址服務器域名:將部署好的地址服務器集群IP掛載到一個域名下,我們假設為address.nacos.com
- 在地址服務器上配置 Nacos 集群的地址列表:
# Add IP to nacos cluster: curl -X POST '$ADDRESS_SERVER:8080/nacos/v1/as/nodes?ips=1.1.1.1:8848,2.2.2.2:8848,3.3.3.3:8848' # Remove IP from nacos cluster: curl -X DELETE '$ADDRESS_SERVER:8080/nacos/v1/as/nodes?ips=1.1.1.1:8848,2.2.2.2:8848,3.3.3.3:8848'
- 客戶端配置 endpoint 為該地址服務器集群域名:在構造 Nacos 客戶端時,除了可以通過指定 serverAddr 來訪問 Nacos 集群外,還可以配置 endpoint 屬性,將這個屬性的值設為 address.nacos.com ,這樣就可以達到和配置 serverAddr 相同的效果。
- 通過源碼構建地址服務器安裝包,在 Nacos 工程根目錄下執行:
mvn -Prelease-address clean install -Dmaven.test.skip=true
安裝包會生成在distribution/target目錄下。
服務訂閱者列表
@nicholas2015
服務訂閱者列表是1.1.0增加的另外一個功能,就是可以在控制台上查看一個服務的消費者,執行步驟如下:
- 在服務列表頁面,找到想要查詢訂閱者的服務:
- 進入訂閱者列表頁面,在“服務名稱”輸入框輸入想要查詢的服務名,在“分組名稱”輸入框輸入服務的分組名(默認為DEFAULAT_GROUP),點擊“查詢”后,得到訂閱者的信息,包括IP和端口、客戶端版本和應用名。
服務自定義心跳周期
@lanCao
之前的版本中,客戶端注冊服務時,不能自定義上報心跳的周期以及客戶端下線時自動刪除實例的間隔。在1.1.0中,我們支持了這個特性,應用可以在注冊時,通過設置實例的metadata,來指定心跳周期、健康檢查過期時間及刪除實例時間。具體舉例如下:
String serviceName = randomDomainName(); Instance instance = new Instance(); instance.setIp("1.1.1.1"); instance.setPort(9999); Map<String, String> metadata = new HashMap<String, String>(); // 設置心跳的周期,單位為秒,這里將心跳間隔設置為3秒: metadata.put(PreservedMetadataKeys.HEART_BEAT_INTERVAL, "3"); // 設置心跳超時時間,單位為秒,這里將心跳超時時間設為6秒, // 即服務端6秒收不到客戶端心跳,會將該客戶端注冊的實例設為不健康: metadata.put(PreservedMetadataKeys.HEART_BEAT_TIMEOUT, "6"); // 設置實例刪除的超時時間,單位為秒,這里將實例刪除超時時間設為9秒, // 即服務端9秒收不到客戶端心跳,會將該客戶端注冊的實例刪除: metadata.put(PreservedMetadataKeys.IP_DELETE_TIMEOUT, "9"); instance.setMetadata(metadata); naming.registerInstance(serviceName, instance);
Config 監聽器的優化
@chuntaojun
當存在程序啟動之初,如果用戶通過ConfigService.getConfig
獲取配置的同時,又注冊了監聽器,那么會存在監聽器再次通知用戶剛剛獲取的配置信息。因此在version 1.1.0
版本中,增加了新的接口以及一個系統參數(使用戶無需修改現有代碼)
String getConfigAndSignListener(String dataId, String group, long timeoutMs, Listener listener) throws NacosException;
該方法在獲取配置后,隨即注冊一個監聽器,避免監聽器通知用戶剛剛才拉取的配置信息nacos.enableRemoteSyncConfig=true | false
設置該系統參數,將在監聽器注冊時主動去向遠端拉取當前最新的配置信息,但是存在一定的網絡開銷,因此建議用戶采取接口的方式
轉自----------https://my.oschina.net/u/1464083/blog/3074303