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

Nacos近期发布了0.7.0版本,该版本支持对接第三方CMDB获取CMDB数据、使用Selector机制来配置服务的路由类型、支持单机模式使用MySQL数据库、上线Node.js客户端,并修复了一些bug。
-> “阿里巴巴中间件”微信公众号后台发送 “Nacos”,了解更多项目信息。
对接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=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 社区
从Nacos用户发展而成贡献者顺理成章,而Nacos开发团队也确实在日趋壮大,从开始的只有4个代码contributor发展到目前的24个,随着__阿里巴巴__其他团队成员如 @小马哥 等人,__虎牙直播__的 @张波 @周健 团队等人,nacos-docker-k8s 贡献者 @张龙__,前端的主要贡献者饿了么 __@王彦民__,Spring Cloud中文社区创立者 __@许进 等的陆续加入,相信未来Nacos社区的力量未来会越来越强大。
而社区也正在计划在合适的时机上,将在Nacos官网 nacos.io 中添加团队介绍页,将大家正式公布于众,欢迎大家加入Nacos社区,贡献社区。用Apache的话说,__“社区高于代码”!__

新人时刻 - "什么是Nacos?"
还不知道什么是Nacos? 没关系,在github上star一下跟程序猿兄弟打个招呼吧!!
Nacos 是阿里巴巴于7月份新开源的项目,Nacos的主要愿景是期望通过提供易用的 动态服务发现、服务配置管理、服务共享与管理 的基础设施,帮助用户在云原生时代更好的构建、交付、管理自己的微服务平台。

github项目地址在 这里
更多与 Nacos 相关的开源项目信息
Nacos v0.7.0:对接CMDB,实现基于标签的服务发现能力的更多相关文章
- Nacos 发布 v0.8.0 Pre-GA版本,安全稳定上生产?
服务注册和服务配置开源项目 Nacos 本周发布了 v0.8.0 Pre-GA 版本,作为开源项目生命周期中的里程碑版本之一,v0.8.0 Pre-GA版本支持登录.命名空间.Metrics监控(对接 ...
- 聊一聊和Nacos 2.0.0对接那些事
前言 nacos 2.0.0 已经发布了 alpha1, alpha2 和 beta 三个版本了,部分测试报告也已经出来了. Nacos2.0.0-ALPHA2 服务发现性能测试报告 Nacos 2. ...
- Nacos 发布 1.0.0 GA 版本,可大规模投入到生产环境
经过 3 个 RC 版本的社区体验之后,Nacos 正式发布 1.0.0 GA 版本,在架构.功能和 API 设计上进行了全方位的重构和升级. 1.0.0 版本的发布标志着 Nacos 已经可以大规模 ...
- 分布式边缘容器项目 SuperEdge v0.7.0 版本来袭!
作者 SuperEdge 开发者团队,腾讯云容器中心TKE Edge团队 摘要 SuperEdge是基于原生Kubernetes的分布式边缘云容器管理系统,由腾讯云牵头,联合英特尔.VMware威睿. ...
- Nacos:Nacos与OpenFeign的对接使用
Nacos(三):Nacos与OpenFeign的对接使用 上篇文章中,简单介绍了如何在SpringCloud项目中接入Nacos作为注册中心,其中服务消费者是通过RestTemplate+Rib ...
- 全网最新的nacos 2.1.0集群多节点部署教程
原文链接:全网最新的nacos 2.1.0集群多节点部署教程-语雀 基本信息 进度整理中 版本 2.1.0 版本发布日期 2022-04-29 git revision number b5845313 ...
- LAL v0.32.0发布,更好的支持纯视频流
Go语言流媒体开源项目 LAL 今天发布了v0.32.0版本.距离上个版本刚好一个月时间,LAL 依然保持着高效迭代的状态. LAL 项目地址:https://github.com/q19120177 ...
- EntityFramework 7.0之初探【基于VS 2015】(十)
前言 本篇作为EF 7.0的开篇也是Entity Framework目前系列末篇,因为关于EF 7.0学习资料实在是太少,我都是参考老外的资料花费了不少时间去研究去尝试同时也失败多次,个人觉得那是值得 ...
- Google Tensorflow 源码编译(三):tensorflow<v0.5.0>
这几天终于把tensorflow安装上了,中间遇到过不少的问题,这里记录下来.供大家想源码安装的参考. 安装环境:POWER8处理器,Docker容器Ubuntu14.04镜像. Build Tens ...
随机推荐
- keepAlived常见问题
1.脑裂问题 1.定义: 在一个高可用(HA)系统中,当关联着的两个结点互相之间断开通信时,本来为一个独立的对外提供服务的系统分裂为两个独立的结点,这时两个结点会争抢资源.(keepAlived 中表 ...
- JS变量1
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 笔记:Python列表和元组
列表 列表和字符串之间的转换 >>> li = list('hello') >>> li ['h', 'e', 'l', 'l', 'o'] >>> ...
- Deployment的使用
RC和RS的功能基本上是差不多的,唯一的区别就是RS支持集合的selector. RC|RS是Kubernetes的一个核心概念,当我们把应用部署到集群之后,需要保证应用能够持续稳定的运行,RC|RS ...
- JAVA jar命令(一)-jar打包class文件
jar包本质上是将所有class文件.资源文件压缩打成一个包(也可以选择不压缩),可选择在jar包中生成META-INF/MANIFEST.MF文件,MANIFEST.MF是清单文件,里面可以记录主类 ...
- SQL Server 获取所有库名
----1. 获取所有的数据库名----- SELECT NAME FROM MASTER.DBO.SYSDATABASES ORDER BY NAME -----2. 获取所有的表名------ ...
- IDEA 注解开发流程
IDEA 注解开发流程 分为以下四步 分别是 1 导入依赖 2 配置文件 applicationContext.xml 3 在需要创建对象的类上添加注解 4 测试 详细步骤和代码如下 1 导入依 ...
- thinkphp 模板文件
因为模板文件中可能会泄露数据表的字段信息,有两种方法可以保护你的模板文件不被访问到: 第一种方式是配置.htaccess文件,针对Apache服务器而言. 大理石平台厂家 把以下代码保存在模块的模板目 ...
- Elasticsearch集群状态查看命令
_cat $ curl localhost:9200/_cat=^.^=/_cat/allocation/_cat/shards/_cat/shards/{index}/_cat/master/_ca ...
- fread读入挂and普通读入挂and浮点数读入挂
fread读入挂 版本一 namespace fastIO { #define BUF_SIZE 100000 //fread -> read bool IOerror = 0; inline ...