Nacos v0.7.0:对接 CMDB,实现基于标签的服务发现能力

栏目: 数据库 · Mysql · 发布时间: 5年前

内容简介:Nacos近期发布了0.7.0版本,该版本支持对接第三方CMDB获取CMDB数据、使用Selector机制来配置服务的路由类型、支持单机模式使用MySQL数据库、上线Node.js客户端,并修复了一些bug。

Nacos v0.7.0:对接 CMDB,实现基于标签的服务发现能力

Nacos近期发布了0.7.0版本,该版本支持对接第三方CMDB获取CMDB数据、使用Selector机制来配置服务的路由类型、支持单机模式使用 MySQL 数据库、上线Node.js客户端,并修复了一些bug。

一、对接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实现。

具体步骤如下:

  • 新建一个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

  • 在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=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 v0.7.0:对接 CMDB,实现基于标签的服务发现能力》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

python 3标准库

python 3标准库

道格·赫尔曼 / 机械工业出版社 / 2018-10 / 199

在本书中,你会看到用来处理文本、数据类型、算法、数学计算、文件系统、网络通信、Internet、XML、Email、加密、并发性、运行时和语言服务等各个方面的实用代码和解决方案。在内容安排上,每一节都会全面介绍一个模块,并提供一些很有价值的补充资源链接,这使得本书成为一本理想的Python标准库参考手册。一起来看看 《python 3标准库》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

随机密码生成器
随机密码生成器

多种字符组合密码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具