Nacos 是阿里巴巴開源的配置中心和服務發現產品,開源距今已經超過一年的時間。本次1.1.0的發布,帶來了許多重量級的特性更新,包括灰度配置等社區呼聲很高的特性,下面會介紹1.1.0版本發布的新特性和每個特性的使用方式。
0.8.0及以上版本:
1. 解壓安裝包后替換{nacos.home}/target/nacos-server.jar
2. 刪除{nacos.home}/plugins/cmdb/及{nacos.home}/plugins/health/下的所有文件
3. 逐台重啟Nacos Server即可
0.8.0以下版本,先升級到1.0.0版本。
請使用最新的1.1.1版本,修復了1.1.0版本的一個客戶端版本顯示問題。
@yanlinly @loadchange
灰度配置指的是指定部分客戶端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 官網地址伺服器文章,這裡只做一個簡單的說明。
一般中間件產品,客戶端定址服務端的方式都是在客戶端配置服務端的地址列表,這樣有一個缺點是當服務端的地址發生變動時,客戶端無法實時的感知到,也無法動態調整訪問的服務端集群。而在阿里巴巴的一種比較常見的客戶端定址服務端的方式是地址伺服器。簡單的說就是部署單獨的地址伺服器,地址伺服器提供介面,獲取相關中間件產品服務端集群的地址。由於地址伺服器功能比較單一,因此穩定性比較容易保證。客戶端只需要配置地址伺服器的域名,通過地址伺服器獲取想要訪問的中間件的集群地址,這樣既保證能夠感知中間件集群的動態變化,也能夠為客戶端配置更靈活的集群訪問策略。
下面介紹地址伺服器模塊的使用。
一、部署地址伺服器
二、配置地址伺服器域名:將部署好的地址伺服器集群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'
mvn -Prelease-address clean install -Dmaven.test.skip=true
3.安裝包會生成在distribution/target目錄下。
@nicholas2015
服務訂閱者列表是1.1.0增加的另外一個功能,就是可以在控制台上查看一個服務的消費者,執行步驟如下:
@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);
@chuntaojun
當存在程序啟動之初,如果用戶通過 ConfigService.getConfig
獲取配置的同時,又註冊了監聽器,那麼會存在監聽器再次通知用戶剛剛獲取的配置信息。因此在 version 1.1.0
版本中,增加了新的介面以及一個系統參數(使用戶無需修改現有代碼)
String getConfigAndSignListener(String dataId, String group, long timeoutMs, Listener listener) throws NacosException;
該方法在獲取配置后,隨即註冊一個監聽器,避免監聽器通知用戶剛剛才拉取的配置信息
nacos.enableRemoteSyncConfig=true | false
設置該系統參數,將在監聽器註冊時主動去向遠端拉取當前最新的配置信息,但是存在一定的網路開銷,因此建議用戶採取介面的方式
@lzp0412 @peggypig @atlanssia
Nacos 上周還發布了 Go 語言的 SDK ,目前發布了0.1.0-beta版本,倉庫地址是點擊這裡。Nacos Go SDK 是單獨的倉庫,由 Nacos Committer 參與維護,在代碼上不屬於 Nacos 1.1.0。在此也非常歡迎社區的 Go 語言高手,參與 Nacos Go SDK 的演進。
為了實現這一目標,你需要積极參与 Nacos 社區。如果您在文檔中發現拼寫錯誤,在代碼中發現錯誤,或想要新功能或想要提供建議,您可以在GitHub上創建一個issues。
如果您想開始著手,可以選擇 github 倉庫中有以下標籤的 issues。
Nacos 社區正在蓬勃發展,截止到發文為止,Nacos 已經有 9 個微信群,其中 7 個已滿員,1個QQ群,1個釘釘群,關注 Nacos 的社區人數已經近5000人,在 Nacos 群里跟 「道(基)友」 切磋技術,交流經驗,招聘交友,搶搶紅包...不亦樂乎。
在 Nacos 官網 nacos.io 中,已經添加 團隊介紹頁,裡面包括Nacos的開發者角色定義及職責劃分,同時包含了Naocs的開發者們介紹和靚照哦,歡迎大家加入Nacos社區,貢獻社區。用Apache的話說,「社區高於代碼」!
還不知道什麼是 Nacos ? 沒關係,在github上star一下跟程序猿兄弟打個招呼吧!!
Nacos 是阿里巴巴於2018年7月份新開源的項目,Nacos的主要願景是期望通過提供易用的 動態服務發現
、 服務配置管理
、 服務共享與管理
的基礎設施,幫助用戶在雲原生時代更好的構建、交付、管理自己的微服務平台。
github項目地址在這裡
本文作者:朱鵬飛(花名:敦谷),Github ID: nkorange,阿里巴巴中間件高級開發工程師,Nacos 開源項目負責人,Nacos 註冊中心等模塊主要貢獻者。
[admin
]