Nacos是阿里巴巴開源的服務發現與配置管理項目,本次發佈的1.1.4版本,主要帶來的是與Istio的對接功能,使用的是Istio最新的MCP協議。本文將介紹包括這個功能在內的新版本發佈的功能。git
0.8.0及以上版本:github
0.8.0如下版本,先升級到1.0.0版本。算法
替換pom依賴便可。spring
這是本次版本最大的更新,主要是實現了Nacos服務數據往Istio下發的功能,也是目前業界全部註冊中內心面第一個由官方提供的MCP協議對接版本。Pilot最新的設計中,是使用MCP協議來與全部後端的數據源進行交互的。這樣作的好處是能夠解耦全部擴展組件的代碼,Pilot保持輕量的邏輯,在代碼質量、組件穩定性及擴展性方面都大幅提高。咱們能夠看一下Pilot官方提供的Pilot設計圖,地址詳情參考這裏。docker
雖然在設計圖中,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數據的傳輸,代碼能夠參這裏。api
使用Nacos MCP Server的方式以下:
一、下載最新的Nacos 1.1.4安裝包,解壓;
二、配置application.properties,而後重啓Nacos;微信
nacos.istio.mcp.server.enabled=true
注意:若是Nacos是集羣部署,則只須要配置一臺Server啓動MCP Server便可,由於每臺Nacos Server的數 據都是全量的。同時Nacos MCP Server使用的端口是18848,請注意端口是否衝突;app
三、配置Pilot使用Nacos MCP Server:spring-boot
configSources -- address: x.x.x.x:18848
四、重啓Pilot;
在以前的版本中,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:很是須要解決的問題和很是重要的模塊,但目前缺乏貢獻者,歡迎貢獻者來貢獻。
DISS is cheap, show me your hand
比吐槽更重要的是搭把手,參與社區一塊兒發展 Nacos
做爲用戶關注和加入 Nacos 社區
Nacos 社區正在蓬勃發展,截止到發文爲止,Nacos 短短几個月已經有 9 個微信羣,其中 7 個已滿員,1個QQ羣,1個釘釘羣,關注 Nacos 的社區人數已經近5000人,在 Nacos 羣裏跟 「道(基)友」 切磋技術,交流經驗,招聘交友,搶搶紅包...不亦樂乎。
從Nacos用戶發展而成貢獻者瓜熟蒂落,而Nacos開發團隊也確實在日趨壯大,從開始的只有4個代碼contributor發展到目前的40多個,1.1.4版本中,參與Nacos倉庫貢獻的開發者有:stackisok,loadchange, ly641921791, EZLippi, rushsky518, universefeeler, nkorange, vettal-wu, beldon等。
還不知道什麼是Nacos? 不要緊,在github上star一下跟程序猿兄弟打個招呼吧!!
Nacos 是阿里巴巴於2018年7月份新開源的項目,Nacos的主要願景是指望經過提供易用的 動態服務發現、服務配置管理、服務共享與管理 的基礎設施,幫助用戶在雲原生時代更好的構建、交付、管理本身的微服務平臺。
github項目地址在這裏。
更多與 Nacos 相關的開源項目信息
下期預告:Nacos的下個版本是1.2.0版本,將會支持社區普遍關注的權限控制功能,敬請期待。
阿里雲雙11億元補貼提早領,進入抽取iPhone 11 Pro:https://www.aliyun.com/1111/2...
本文做者:中間件小哥
本文爲雲棲社區原創內容,未經容許不得轉載。