溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Nacos v0.7.0中如何對(duì)接CMDB實(shí)現(xiàn)基于標(biāo)簽的服務(wù)發(fā)現(xiàn)能力

發(fā)布時(shí)間:2021-11-23 21:28:46 來(lái)源:億速云 閱讀:157 作者:柒染 欄目:云計(jì)算

這篇文章給大家介紹Nacos v0.7.0中如何對(duì)接CMDB實(shí)現(xiàn)基于標(biāo)簽的服務(wù)發(fā)現(xiàn)能力,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

摘要:            Nacos近期發(fā)布了0.7.0版本,該版本支持對(duì)接第三方CMDB獲取CMDB數(shù)據(jù)、使用Selector機(jī)制來(lái)配置服務(wù)的路由類(lèi)型、支持單機(jī)模式使用MySQL數(shù)據(jù)庫(kù)、上線Node.js客戶(hù)端,并修復(fù)了一些bug。


Nacos近期發(fā)布了0.7.0版本,該版本支持對(duì)接第三方CMDB獲取CMDB數(shù)據(jù)、使用Selector機(jī)制來(lái)配置服務(wù)的路由類(lèi)型、支持單機(jī)模式使用MySQL數(shù)據(jù)庫(kù)、上線Node.js客戶(hù)端,并修復(fù)了一些bug。

對(duì)接CMDB實(shí)現(xiàn)就近訪問(wèn)

Nacos v0.7.0中如何對(duì)接CMDB實(shí)現(xiàn)基于標(biāo)簽的服務(wù)發(fā)現(xiàn)能力cdn.nlark.com/lark/0/2018/png/15356/1544702277705-0bbfca60-6629-477c-92bb-1a690e68f9cd.png">

在服務(wù)進(jìn)行多機(jī)房或者多地域部署時(shí),跨地域的服務(wù)訪問(wèn)往往延遲較高,一個(gè)城市內(nèi)的機(jī)房間的典型網(wǎng)絡(luò)延遲在1ms左右,而跨城市的網(wǎng)絡(luò)延遲,例如上海到北京大概為30ms。此時(shí)自然而然的一個(gè)想法就是能不能讓服務(wù)消費(fèi)者和服務(wù)提供者進(jìn)行同地域訪問(wèn)。

Nacos定義了一個(gè)SPI接口,里面包含了與第三方CMDB約定的一些方法。用戶(hù)依照約定實(shí)現(xiàn)了相應(yīng)的SPI接口后,將實(shí)現(xiàn)打成jar包放置到Nacos安裝目錄下,重啟Nacos即可讓Nacos與CMDB的數(shù)據(jù)打通。

CMDB插件開(kāi)發(fā)流程

參考 https://github.com/nacos-group/nacos-examples ,這里已經(jīng)給出了一個(gè)示例plugin實(shí)現(xiàn)。
具體步驟如下:

  1. 新建一個(gè)maven工程,引入依賴(lài)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. 定義實(shí)現(xiàn)類(lèi),繼承com.alibaba.nacos.api.cmdb.CmdbService,并實(shí)現(xiàn)相關(guān)方法。

Nacos v0.7.0中如何對(duì)接CMDB實(shí)現(xiàn)基于標(biāo)簽的服務(wù)發(fā)現(xiàn)能力

  1. 在src/main/resource/目錄下新建目錄:META-INF/services

Nacos v0.7.0中如何對(duì)接CMDB實(shí)現(xiàn)基于標(biāo)簽的服務(wù)發(fā)現(xiàn)能力

  1. 在src/main/resources/META-INF/services目錄下新建文件com.alibaba.nacos.api.cmdb.CmdbService,并在文件里將第三步中創(chuàng)建的實(shí)現(xiàn)類(lèi)全名寫(xiě)入該文件:

Nacos v0.7.0中如何對(duì)接CMDB實(shí)現(xiàn)基于標(biāo)簽的服務(wù)發(fā)現(xiàn)能力

  1. 代碼自測(cè)完成后,執(zhí)行命令進(jìn)行打包:

    mvn package assembly:single -Dmaven.test.skip=true
  2. 將target目錄下的包含依賴(lài)的jar包上傳到nacos CMDB插件目錄:

    {nacos.home}/plugins/cmdb
  3. 在nacos的application.properties里打開(kāi)加載插件開(kāi)關(guān):

    nacos.cmdb.loadDataAtStart=true
  4. 重啟nacos Server,即可加載到您實(shí)現(xiàn)的nacos-cmdb插件獲取您的CMDB數(shù)據(jù)。

配置服務(wù)路由類(lèi)型

在控制臺(tái)上,對(duì)服務(wù)進(jìn)行編輯,使用同機(jī)房?jī)?yōu)先策略:

Nacos v0.7.0中如何對(duì)接CMDB實(shí)現(xiàn)基于標(biāo)簽的服務(wù)發(fā)現(xiàn)能力

這樣配置后,所有訪問(wèn)該服務(wù)的消費(fèi)者,都會(huì)實(shí)現(xiàn)同機(jī)房?jī)?yōu)先策略。

支持單機(jī)模式使用MySQL數(shù)據(jù)庫(kù)

在0.7版本之前,在單機(jī)模式時(shí)nacos使用嵌入式數(shù)據(jù)庫(kù)實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ),不方便觀察數(shù)據(jù)存儲(chǔ)的基本情況。0.7版本增加了支持mysql數(shù)據(jù)源能力,具體的操作步驟:

安裝數(shù)據(jù)庫(kù),版本要求:5.6.5+

初始化mysql數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)初始化文件: nacos-mysql.sql

修改application.properties文件,增加支持mysql數(shù)據(jù)源配置(目前只支持mysql),添加mysql數(shù)據(jù)源的url、用戶(hù)名和密碼。

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

再以單機(jī)模式啟動(dòng)nacos

sh startup.sh -m standalone

nacos所有寫(xiě)嵌入式數(shù)據(jù)庫(kù)的數(shù)據(jù)都寫(xiě)到了mysql

支持Node.js客戶(hù)端

在 Java 版本客戶(hù)端推出之后,我們一直思考多語(yǔ)言版本,在對(duì)多語(yǔ)言的調(diào)研中,Node.js 的呼聲是最高的,不少 Node.js 開(kāi)發(fā)者都期盼著有原生的 Node.js 客戶(hù)端可以使用。
如今我們推出了第一版客戶(hù)端,完成了常見(jiàn)的增刪改查功能,借由此,向多語(yǔ)言化邁出了第一步。

以nacos-config為例,下面是一個(gè)簡(jiǎn)單的接入說(shuō)明,具體接入可以參考: https://github.com/nacos-group/nacos-sdk-nodejs

import {NacosConfigClient} from 'nacos';   // tsconst NacosConfigClient = require('nacos').NacosConfigClient; // js// 下面的代碼是尋址模式const configClient = new NacosConfigClient({
  endpoint: 'acm.aliyun.com', // acm 控制臺(tái)查看
  namespace: '***************', // acm 控制臺(tái)查看
  accessKey: '***************', // acm 控制臺(tái)查看
  secretKey: '***************', // acm 控制臺(tái)查看
  requestTimeout: 6000, // 請(qǐng)求超時(shí)時(shí)間,默認(rèn)6s});// 下面的代碼是直連模式const configClient = new NacosConfigClient({
  serverAddr: '127.0.0.1:8848', // 對(duì)端的 ip 和端口,其他參數(shù)同尋址模式});// 主動(dòng)拉取配置const content= await configClient.getConfig('test', 'DEFAULT_GROUP');console.log('getConfig = ',content);

關(guān)于Nacos v0.7.0中如何對(duì)接CMDB實(shí)現(xiàn)基于標(biāo)簽的服務(wù)發(fā)現(xiàn)能力就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI