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 ...
随机推荐
- javascript基础入门之js中的数据类型与数据转换01
javascript基础入门之js中的数据结构与数据转换01 js的组成(ECMAScript.BOM.DOM) js中的打印语句: 数据类型 变量 ...
- sqlserver 如何瞬间执行上万条数据
核心的内容是:使用自定义表类型 第一步:创建存储过程P_T1DeclareInfo_Upload_new 参数: T1DeclareInfo_UploadPNSN_Param 类型 T1Declar ...
- 笔记53 Mybatis快速入门(四)
动态SQL 1.if 假设需要对Product执行两条sql语句,一个是查询所有,一个是根据名称模糊查询.那么按照现在的方式,必须提供两条sql语句:listProduct和listProductBy ...
- 遍历对象不能通过for循环因为对象无序 可以通过for -n
遍历对象不能通过for循环因为对象无序 可以通过for -n var json={ "name":“小明”, “age”:“10”, “sex”:"男" }; ...
- 百度网盘Mac版如何分享链接?创建百度网盘 for Mac分享链接的方法
想把自己百度网盘里的数据分享给朋友,该怎么操作呢?有很多朋友使用百度网盘,可以很轻松的自己的文件上传到网盘上,并可跨终端随时随地查看和分享.下面Mac down小编就给大家介绍一下创建百度网盘 for ...
- springMVC快速入门 共分为五步
springMVC快速入门 共分为5步分别为: 1 导入依赖 2 spring-mvc.xml 配置 3 web.xml配置 4 自定义一个核心控制类 5 页面配置 详细步骤以及代码 ...
- Android中的第一个NDK的例子
前几天研究了JNI技术后,想在Android上试一试研究结果,查阅了很多资料后,总结如下步骤: 首先来看一下什么是NDK NDK 提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动 ...
- NX二次开发-NXOPEN导出STEP Step214Creator *step214Creator1;
没有什么可以看的,NXOPEN直接录制一下导出STEP就可以了.录制出来自己挑需要的代码拿过来改一下. NX9+VS2012 #include <NXOpen/Part.hxx> #inc ...
- inobounce.js : 禁止IOS H5的滑动回弹
IOS的移动端/H5/webapp 页面如果滚动到底部或者在页面顶部再往上拉,都会出现一个回弹的效果. 想取消这个效果可以引入一个简单的库就行,不用再写繁琐的样式. github地址 直接引入就行 & ...
- FastText总结,fastText 源码分析
文本分类单层网络就够了.非线性的问题用多层的. fasttext有一个有监督的模式,但是模型等同于cbow,只是target变成了label而不是word. fastText有两个可说的地方:1 在w ...