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設計圖,地址詳情參考這裏

雖然在設計圖中,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 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 社區

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

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

還不知道什麼是Nacos? 沒關係,在github上star一下跟程序猿兄弟打個招呼吧!!
Nacos 是阿里巴巴於2018年7月份新開源的項目,Nacos的主要願景是期望通過提供易用的 動態服務發現、服務配置管理、服務共享與管理 的基礎設施,幫助用戶在雲原生時代更好的構建、交付、管理自己的微服務平臺。

github項目地址在這裏

更多與 Nacos 相關的開源項目信息

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

阿里雲雙11億元補貼提前領,進入抽取iPhone 11 Pro:https://www.aliyun.com/1111/2...


本文作者:中間件小哥

閱讀原文

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章