Nacos v0.7.0中如何对接CMDB实现基于标签的服务发现能力

67次阅读
没有评论

共计 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,并实现相关方法。

Nacos v0.7.0 中如何对接 CMDB 实现基于标签的服务发现能力

在 src/main/resource/ 目录下新建目录:META-INF/services

Nacos v0.7.0 中如何对接 CMDB 实现基于标签的服务发现能力

在 src/main/resources/META-INF/services 目录下新建文件 com.alibaba.nacos.api.cmdb.CmdbService,并在文件里将第三步中创建的实现类全名写入该文件:

Nacos v0.7.0 中如何对接 CMDB 实现基于标签的服务发现能力

代码自测完成后,执行命令进行打包:

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 数据。

配置服务路由类型

在控制台上,对服务进行编辑,使用同机房优先策略:

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=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 实现基于标签的服务发现能力就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计3017字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)