共計 3017 個字符,預計需要花費 8 分鐘才能閱讀完成。
這篇文章給大家介紹 Nacos v0.7.0 中如何對接 CMDB 實現基于標簽的服務發現能力,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
摘要:
Nacos 近期發布了 0.7.0 版本,該版本支持對接第三方 CMDB 獲取 CMDB 數據、使用 Selector 機制來配置服務的路由類型、支持單機模式使用 MySQL 數據庫、上線 Node.js 客戶端,并修復了一些 bug。
Nacos 近期發布了 0.7.0 版本,該版本支持對接第三方 CMDB 獲取 CMDB 數據、使用 Selector 機制來配置服務的路由類型、支持單機模式使用 MySQL 數據庫、上線 Node.js 客戶端,并修復了一些 bug。
對接 CMDB 實現就近訪問
在服務進行多機房或者多地域部署時,跨地域的服務訪問往往延遲較高,一個城市內的機房間的典型網絡延遲在 1ms 左右,而跨城市的網絡延遲,例如上海到北京大概為 30ms。此時自然而然的一個想法就是能不能讓服務消費者和服務提供者進行同地域訪問。
Nacos 定義了一個 SPI 接口,里面包含了與第三方 CMDB 約定的一些方法。用戶依照約定實現了相應的 SPI 接口后,將實現打成 jar 包放置到 Nacos 安裝目錄下,重啟 Nacos 即可讓 Nacos 與 CMDB 的數據打通。
CMDB 插件開發流程
參考https://github.com/nacos-group/nacos-examples
,這里已經給出了一個示例 plugin 實現。
具體步驟如下:
新建一個 maven 工程,引入依賴 nacos-api:
dependency
groupId com.alibaba.nacos /groupId
artifactId nacos-api /artifactId
version 0.7.0 /version
/dependency
引入打包插件:
plugin
groupId org.apache.maven.plugins /groupId
artifactId maven-assembly-plugin /artifactId
configuration
descriptorRefs
descriptorRef jar-with-dependencies /descriptorRef
/descriptorRefs
/configuration
/plugin
定義實現類,繼承 com.alibaba.nacos.api.cmdb.CmdbService,并實現相關方法。
在 src/main/resource/ 目錄下新建目錄:META-INF/services
在 src/main/resources/META-INF/services 目錄下新建文件 com.alibaba.nacos.api.cmdb.CmdbService,并在文件里將第三步中創建的實現類全名寫入該文件:
代碼自測完成后,執行命令進行打包:
mvn package assembly:single -Dmaven.test.skip=true
將 target 目錄下的包含依賴的 jar 包上傳到 nacos CMDB 插件目錄:
{nacos.home}/plugins/cmdb
在 nacos 的 application.properties 里打開加載插件開關:
nacos.cmdb.loadDataAtStart=true
重啟 nacos Server,即可加載到您實現的 nacos-cmdb 插件獲取您的 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=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
再以單機模式啟動 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 // tsconst 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 v0.7.0 中如何對接 CMDB 實現基于標簽的服務發現能力就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。