天天看點

Nacos 1.1.4 釋出,業界率先支援 Istio MCP 協定

Nacos是阿裡巴巴開源的服務發現與配置管理項目,本次釋出的1.1.4版本,主要帶來的是與Istio的對接功能,使用的是Istio最新的MCP協定。本文将介紹包括這個功能在内的新版本釋出的功能。

更新指南

服務端

0.8.0及以上版本:

  • 解壓安裝包後替換{nacos.home}/target/nacos-server.jar
  • 逐台重新開機Nacos Server即可

0.8.0以下版本,先更新到1.0.0版本。

用戶端

替換pom依賴即可。

支援Istio MCP協定

這是本次版本最大的更新,主要是實作了Nacos服務資料往Istio下發的功能,也是目前業界所有注冊中心裡面第一個由官方提供的MCP協定對接版本。Pilot最新的設計中,是使用MCP協定來與所有後端的資料源進行互動的。這樣做的好處是可以解耦所有擴充元件的代碼,Pilot保持輕量的邏輯,在代碼品質、元件穩定性及擴充性方面都大幅提升。我們可以看一下Pilot官方提供的Pilot設計圖,位址詳情參考

這裡

Nacos 1.1.4 釋出,業界率先支援 Istio MCP 協定

圖1 Pilot的最新設計概念圖

雖然在設計圖中,Pilot後端的MCP Server已經有了Consul、Eureka等,但是這些項目目前都沒有官方支援的MCP Server。Nacos是目前首個官方支援Istio MCP協定的項目。

關于MCP協定的設計,可以參考Istio的

文檔

。Nacos實作的MCP Server,目前使用的是單個服務編号,全量服務推送的模式,因為目前Pilot還不支援增量的服務資料推送(Nacos 1.1.4釋出之後,Pilot已經支援了endpoint級别的增量推送,Nacos也會在下個版本支援)。實作的邏輯就是啟動一個gRPC Server來進行MCP資料的傳輸,代碼可以參

Nacos 1.1.4 釋出,業界率先支援 Istio MCP 協定

圖2 Nacos MCP Server架構

使用Nacos MCP Server的方式如下:

1、下載下傳最新的Nacos 1.1.4安裝包,解壓;

2、配置application.properties,然後重新開機Nacos;

nacos.istio.mcp.server.enabled=true
           

注意:如果Nacos是叢集部署,則隻需要配置一台Server啟動MCP Server即可,因為每台Nacos Server的數 據都是全量的。同時Nacos MCP Server使用的端口是18848,請注意端口是否沖突;

3、配置Pilot使用Nacos MCP Server:

configSources
-- address: x.x.x.x:18848
           

4、重新開機Pilot;

自定義執行個體ID

在之前的版本中,Instance類的instanceId字段,是用來作為唯一辨別這個instance的屬性,它的值預設是不能由用戶端來指定的。在1.1.4版本中,我們支援了允許用戶端自定義ID以及一個新增加的instanceId生成算法:一個服務内唯一的整數,這個整數可以用來作為執行個體在服務内的唯一索引。這個功能由vettal-wu貢獻,非常感謝。

這個整形instanceId的使用方式為在注冊時配置instance的metadata,指定使用該id生成算法,樣例代碼如下:

Instance instance = new Instance();
instance.setIp("1.1.1.1");
instance.setPort(80);
// 必須設定ephemeral=false,來保證服務端使用的是嚴格的一緻性協定,否則可能會導緻生成的instance id沖突:
instance.setEhpemeral(false);
instance.setMetadata(new HashMap<String, String>());
instance.getMetadata().put(PreservedMetadataKeys.INSTANCE_ID_GENERATOR, Constants.SNOWFLAKE_INSTANCE_ID_GENERATOR);           

Nacos在這個版本也有一些關于代碼品質上的優化更新,具體可以參考1.1.4版本

issue清單

如何共建

為了實作這一目标,你需要積極參與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 1.1.4 釋出,業界率先支援 Istio MCP 協定
  • 作為代碼貢獻者加入 Nacos 社群

從Nacos使用者發展而成貢獻者順理成章,而Nacos開發團隊也确實在日趨壯大,從開始的隻有4個代碼contributor發展到目前的40多個,1.1.4版本中,參與Nacos倉庫貢獻的開發者有:stackisok,loadchange, ly641921791, EZLippi, rushsky518, universefeeler, nkorange, vettal-wu, beldon等。

Nacos 1.1.4 釋出,業界率先支援 Istio MCP 協定

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

還不知道什麼是Nacos? 沒關系,在github上star一下跟程式猿兄弟打個招呼吧!!

Nacos

是阿裡巴巴于2018年7月份新開源的項目,Nacos的主要願景是期望通過提供易用的 動态服務發現、服務配置管理、服務共享與管理 的基礎設施,幫助使用者在雲原生時代更好的建構、傳遞、管理自己的微服務平台。

Nacos 1.1.4 釋出,業界率先支援 Istio MCP 協定

github項目位址在

更多與 Nacos 相關的開源項目資訊

下期預告:Nacos的下個版本是1.2.0版本,将會支援社群廣泛關注的權限控制功能,敬請期待。