Nacos 1.1.1 發佈,支持灰度配置和地址服務器模式

Nacos 是阿里巴巴開源的配置中心和服務發現產品,開源距今已經超過一年的時間。本次1.1.0的發佈,帶來了許多重量級的特性更新,包括灰度配置等社區呼聲很高的特性,下面會介紹1.1.0版本發佈的新特性和每一個特性的使用方式。html

 

升級指南

 

Server端

0.8.0及以上版本:node

  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版本。git

Client端

請使用最新的1.1.1版本,修復了1.1.0版本的一個客戶端版本顯示問題。github

 

新增特性

  • 灰度配置
  • 配置導入導出及配置同步
  • 地址服務器模塊
  • 服務訂閱者列表
  • 自定義實例心跳週期
  • Config監聽器優化
  • Nacos Go SDK發佈

 

灰度配置

@yanlinly @loadchange服務器

灰度配置指的是指定部分客戶端IP進行新配置的下發,其他客戶端配置保持不變,用以驗證新配置對客戶端的影響,保證配置的平穩發佈。灰度配置是生產環境中一個比較重要的功能,對於保證生產環境的穩定性很是重要。在1.1.0中,Nacos 支持了以IP爲粒度的灰度配置,具體使用步驟以下:微信

一、 在配置列表頁面,點擊某個配置的「編輯配置」按鈕:網絡

二、勾選「Beta發佈」,在文本框裏填入要下發配置的IP,多個IP用逗號分隔:dom

三、 修改配置內容,點擊「發佈Beta」按鈕,便可完成灰度配置的發佈:curl

四、 點擊「發佈Beta」後,「發佈Beta」按鈕變灰,此時能夠選擇「中止Beta」或者「發佈」。「中止Beta」表示取消中止灰度發佈,當前灰度發佈配置的IP列表和配置內容都會刪除,頁面回到正常發佈的樣式。「發佈」表示將灰度配置在全部客戶端生效,以前的配置也會被覆蓋,同時頁面回到正常發佈的樣式:maven

 

配置導入導出及配置同步

@KeRan213539

配置管理的另外一個常見需求是可以將一個集羣的配置同步到另一個集羣,或者從一個命名空間同步到另一個命名空間。來自社區的貢獻者KeRan213539貢獻這個很是實用的功能,具體使用步驟以下:

一、 導出查詢結果。能夠根據查詢條件,將當期查詢出的全部結果打包爲一個文件:

二、 導出選中的配置:

三、 導入配置,能夠選擇相同配置的處理策略。

當發現有相同的配置時,會有相應的提示:

同時若是導入的配置文件格式不符合要求,也會有相應的提示:

四、 配置同步,選取想要同步的配置,點擊「克隆」,而後再選擇要同步的目標命名空間,就能夠將配置同步到對應的命名空間:

五、 導入導出文件格式說明。均爲zip壓縮包,壓縮包內有多個目錄,目錄名爲配置的 group,目錄下有具體的文件,文件名爲配置的 dataId ,每一個文件的內容爲配置具體的內容:

地址服務器模塊

@pbting

1.1.0的安裝包列表裏多了一個nacos-address-server-1.1.0。這個安裝包的做用是做爲地址服務器模塊,單獨部署。關於地址服務器的介紹能夠參考Nacos官網地址服務器文章,這裏只作一個簡單的說明。

通常中間件產品,客戶端尋址服務端的方式都是在客戶端配置服務端的地址列表,這樣有一個缺點是當服務端的地址發生變更時,客戶端沒法實時的感知到,也沒法動態調整訪問的服務端集羣。而在阿里巴巴的一種比較常見的客戶端尋址服務端的方式是地址服務器。簡單的說就是部署單獨的地址服務器,地址服務器提供接口,獲取相關中間件產品服務端集羣的地址。因爲地址服務器功能比較單一,所以穩定性比較容易保證。客戶端只須要配置地址服務器的域名,經過地址服務器獲取想要訪問的中間件的集羣地址,這樣既保證可以感知中間件集羣的動態變化,也可以爲客戶端配置更靈活的集羣訪問策略。

下面介紹地址服務器模塊的使用。

  1. 部署地址服務器

    1. 將安裝包列表裏的 nacos-address-server.tar.gz 或者 nacos-address-server.zip 解壓。
    2. 單機模式啓動:執行 sh bin/startup.sh -m standalone -s nacos-address 以 standalone 的方式啓動 address server。
    3. 集羣模式啓動:在 conf 目錄下 將 cluster.conf.example 重名名爲 cluster.conf,而後加入其它 server 的節點。加完後,執行 sh bin/startup.sh -s nacos-address 便可。
  2. 配置地址服務器域名:將部署好的地址服務器集羣IP掛載到一個域名下,咱們假設爲address.nacos.com
  3. 在地址服務器上配置 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'
  1. 客戶端配置 endpoint 爲該地址服務器集羣域名:在構造 Nacos 客戶端時,除了能夠經過指定 serverAddr 來訪問 Nacos 集羣外,還能夠配置 endpoint 屬性,將這個屬性的值設爲 address.nacos.com ,這樣就能夠達到和配置 serverAddr 相同的效果。
  2. 經過源碼構建地址服務器安裝包,在 Nacos 工程根目錄下執行:
mvn -Prelease-address clean install -Dmaven.test.skip=true

安裝包會生成在distribution/target目錄下。

 

服務訂閱者列表

@nicholas2015

服務訂閱者列表是1.1.0增長的另一個功能,就是能夠在控制檯上查看一個服務的消費者,執行步驟以下:

  1. 在服務列表頁面,找到想要查詢訂閱者的服務:

  1. 進入訂閱者列表頁面,在「服務名稱」輸入框輸入想要查詢的服務名,在「分組名稱」輸入框輸入服務的分組名(默認爲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
設置該系統參數,將在監聽器註冊時主動去向遠端拉取當前最新的配置信息,可是存在必定的網絡開銷,所以建議用戶採起接口的方式

 

Nacos Go SDK

@lzp0412 @peggypig @atlanssia

Nacos 上週還發布了Go語言的 SDK ,目前發佈了0.1.0-beta版本,倉庫地址是:https://github.com/nacos-group/nacos-sdk-go。Nacos Go SDK是單獨的倉庫,由Nacos Committer參與維護,在代碼上不屬於Nacos 1.1.0。在此也很是歡迎社區的Go語言高手,參與Nacos Go SDK的演進。

 

如何共建

爲了實現這一目標,你須要積極參與 Nacos 社區。若是您在文檔中發現拼寫錯誤,在代碼中發現錯誤,或想要新功能或想要提供建議,您能夠在GitHub上建立一個issues

若是您想開始着手,能夠選擇github倉庫中有如下標籤的issues。

  • good first issue:對於新手來講是很是好的入門issues。
  • contribution welcome:很是須要解決的問題和很是重要的模塊,但目前缺乏貢獻者,歡迎貢獻者來貢獻。

 

蓬勃發展的 Nacos 社區

DISS is cheap, show me your hand
比吐槽更重要的是搭把手,參與社區一塊兒發展 Nacos

  • 做爲用戶關注和加入 Nacos 社區

Nacos 社區正在蓬勃發展,截止到發文爲止,Nacos 已經有 9 個微信羣,其中 7 個已滿員,1個QQ羣,1個釘釘羣,關注 Nacos 的社區人數已經近5000人,在 Nacos 羣裏跟 「道(基)友」 切磋技術,交流經驗,招聘交友,搶搶紅包...不亦樂乎。

  • 做爲代碼貢獻者加入 Nacos 社區

爲了可以與代碼貢獻者更方便的交流,咱們組建了釘釘羣「Nacos社區核心貢獻小組(23335652)」,這個羣裏都是都是對Nacos貢獻很是感興趣的小夥伴,若是你也想成爲Nacos貢獻者,甚至成爲Committer,歡迎加入這個羣和羣裏的小夥伴一塊兒切磋!

在 Nacos 官網 nacos.io 中,已經添加團隊介紹頁,裏面包括Nacos的開發者角色定義及職責劃分,同時包含了Naocs的開發者們介紹和靚照哦,歡迎你們加入Nacos社區,貢獻社區。用Apache的話說,「社區高於代碼」!

 

新人時刻 - "什麼是Nacos?"

還不知道什麼是 Nacos ? 不要緊,在github上star一下跟程序猿兄弟打個招呼吧!!

Nacos 是阿里巴巴於2018年7月份新開源的項目,Nacos的主要願景是指望經過提供易用的 動態服務發現服務配置管理服務共享與管理 的基礎設施,幫助用戶在雲原生時代更好的構建、交付、管理本身的微服務平臺。

原文連接 本文爲雲棲社區原創內容,未經容許不得轉載。

相關文章
相關標籤/搜索