天天看點

Nacos v0.7.0:對接CMDB,實作基于标簽的服務發現能力

Nacos v0.7.0:對接CMDB,實作基于标簽的服務發現能力

Nacos近期釋出了0.7.0版本,該版本支援對接第三方CMDB擷取CMDB資料、使用Selector機制來配置服務的路由類型、支援單機模式使用MySQL資料庫、上線Node.js用戶端,并修複了一些bug。

-> “阿裡巴巴中間件”微信公衆号背景發送 “Nacos”,了解更多項目資訊。

對接CMDB實作就近通路

Nacos v0.7.0:對接CMDB,實作基于标簽的服務發現能力

在服務進行多機房或者多地域部署時,跨地域的服務通路往往延遲較高,一個城市内的機房間的典型網絡延遲在1ms左右,而跨城市的網絡延遲,例如上海到北京大概為30ms。此時自然而然的一個想法就是能不能讓服務消費者和服務提供者進行同地域通路。

Nacos定義了一個SPI接口,裡面包含了與第三方CMDB約定的一些方法。使用者依照約定實作了相應的SPI接口後,将實作打成jar包放置到Nacos安裝目錄下,重新開機Nacos即可讓Nacos與CMDB的資料打通。

CMDB插件開發流程

參考

https://github.com/nacos-group/nacos-examples

,這裡已經給出了一個示例plugin實作。

具體步驟如下:

  1. 建立一個maven工程,引入依賴nacos-api:
    <dependency>
                <groupId>com.alibaba.nacos</groupId>
                <artifactId>nacos-api</artifactId>
                <version>0.7.0</version>
            </dependency>           
  2. 引入打包插件:
    <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <configuration>
                        <descriptorRefs>
                            <descriptorRef>jar-with-dependencies</descriptorRef>
                        </descriptorRefs>
                    </configuration>
                </plugin>           
  3. 定義實作類,繼承com.alibaba.nacos.api.cmdb.CmdbService,并實作相關方法。
Nacos v0.7.0:對接CMDB,實作基于标簽的服務發現能力
  1. 在src/main/resource/目錄下建立目錄:META-INF/services
Nacos v0.7.0:對接CMDB,實作基于标簽的服務發現能力
  1. 在src/main/resources/META-INF/services目錄下建立檔案com.alibaba.nacos.api.cmdb.CmdbService,并在檔案裡将第三步中建立的實作類全名寫入該檔案:
Nacos v0.7.0:對接CMDB,實作基于标簽的服務發現能力
  1. 代碼自測完成後,執行指令進行打包:
    mvn package assembly:single -Dmaven.test.skip=true           
  2. 将target目錄下的包含依賴的jar包上傳到nacos CMDB插件目錄:
    {nacos.home}/plugins/cmdb           
  3. 在nacos的application.properties裡打開加載插件開關:
    nacos.cmdb.loadDataAtStart=true           
  4. 重新開機nacos Server,即可加載到您實作的nacos-cmdb插件擷取您的CMDB資料。

配置服務路由類型

在控制台上,對服務進行編輯,使用同機房優先政策:

Nacos v0.7.0:對接CMDB,實作基于标簽的服務發現能力

這樣配置後,所有通路該服務的消費者,都會實作同機房優先政策。

支援單機模式使用MySQL資料庫

在0.7版本之前,在單機模式時nacos使用嵌入式資料庫實作資料的存儲,不友善觀察資料存儲的基本情況。0.7版本增加了支援mysql資料源能力,具體的操作步驟:

安裝資料庫,版本要求:5.6.5+

初始化mysql資料庫,資料庫初始化檔案:

nacos-mysql.sql

修改application.properties檔案,增加支援mysql資料源配置(目前隻支援mysql),添加mysql資料源的url、使用者名和密碼。

spring.datasource.platform=mysql

db.num=2
db.url.0=jdbc:mysql://11.162.196.16:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.url.1=jdbc:mysql://11.163.152.9:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=nacos_devtest
db.password=youdontknow           

再以單機模式啟動nacos

sh startup.sh -m standalone           

nacos所有寫嵌入式資料庫的資料都寫到了mysql

支援Node.js用戶端

在 Java 版本用戶端推出之後,我們一直思考多語言版本,在對多語言的調研中,Node.js 的呼聲是最高的,不少 Node.js 開發者都期盼着有原生的 Node.js 用戶端可以使用。

如今我們推出了第一版用戶端,完成了常見的增删改查功能,借由此,向多語言化邁出了第一步。

以nacos-config為例,下面是一個簡單的接入說明,具體接入可以參考:

https://github.com/nacos-group/nacos-sdk-nodejs
import {NacosConfigClient} from 'nacos';   // ts
const NacosConfigClient = require('nacos').NacosConfigClient; // js

// 下面的代碼是尋址模式
const configClient = new NacosConfigClient({
  endpoint: 'acm.aliyun.com', // acm 控制台檢視
  namespace: '***************', // acm 控制台檢視
  accessKey: '***************', // acm 控制台檢視
  secretKey: '***************', // acm 控制台檢視
  requestTimeout: 6000, // 請求逾時時間,預設6s
});

// 下面的代碼是直連模式
const configClient = new NacosConfigClient({
  serverAddr: '127.0.0.1:8848', // 對端的 ip 和端口,其他參數同尋址模式
});

// 主動拉取配置
const content= await configClient.getConfig('test', 'DEFAULT_GROUP');
console.log('getConfig = ',content);           

蓬勃發展的 Nacos 社群

DISS is cheap, show me your hand

比吐槽更重要的是搭把手,參與社群一起發展Nacos

  • 作為使用者關注和加入 Nacos 社群

Nacos 社群正在蓬勃發展,截止到發文為止,Nacos 短短幾個月已經有5個微信群,其中4個已滿員,1個QQ群,1個釘釘群,關注 Nacos 的社群人數已經近3000人,在 Nacos 群裡跟 “道(基)友” 切磋技術,交流經驗,招聘交友,搶搶紅包...不亦樂乎。

要加入 Nacos 微信社群,你可以通過掃下面的__“超哥”__的微信二維碼,讓__“超哥”__ 幫你拉入 “Nacos社群微信交流群”

Nacos v0.7.0:對接CMDB,實作基于标簽的服務發現能力
  • 作為代碼貢獻者加入 Nacos 社群

從Nacos使用者發展而成貢獻者順理成章,而Nacos開發團隊也确實在日趨壯大,從開始的隻有4個代碼contributor發展到目前的24個,随着__阿裡巴巴__其他團隊成員如 @小馬哥 等人,__虎牙直播__的 @張波 @周健 團隊等人,

nacos-docker-k8s

貢獻者 @張龍__,前端的主要貢獻者餓了麼 __@王彥民__,Spring Cloud中文社群創立者 __@許進 等的陸續加入,相信未來Nacos社群的力量未來會越來越強大。

而社群也正在計劃在合适的時機上,将在Nacos官網

nacos.io

中添加團隊介紹頁,将大家正式公布于衆,歡迎大家加入Nacos社群,貢獻社群。用Apache的話說,__“社群高于代碼”!__

Nacos v0.7.0:對接CMDB,實作基于标簽的服務發現能力

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

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

是阿裡巴巴于7月份新開源的項目,Nacos的主要願景是期望通過提供易用的

動态服務發現

服務配置管理

服務共享與管理

的基礎設施,幫助使用者在雲原生時代更好的建構、傳遞、管理自己的微服務平台。

Nacos v0.7.0:對接CMDB,實作基于标簽的服務發現能力

github項目位址在

這裡

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