
Nacos真香,从零到一学起来
作者 | 朱晋君
来源 | 君哥聊技术(ID:gh_1f109b82d301)
Nacos是阿里巴巴开源的微服务管理平台,可以帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理。
这篇文章主要来讲一下Nacos作为配置中心和注册中心的使用。
1 安装
1.1 linux下安装
首先搭建一套单机版的Nacos集群。Nacos的安装有两种方式,一种是下载源码自己编译安装,另一种是下载编译后的压缩包解压后直接使用。本文我采用第二种方式。首先从官网下载安装包,下载地址如下:
linux下安装可能会遇到环境变量的问题,可以参考这篇文章[1]。如果还不行,执行下面两个命令重新安装:
jdk没有问题后,启动Nacos,启动日志如下:
1.2 可视化界面
浏览器输入下面地址:
登录界面如下:
账号/密码:nacos/nacos,登录成功后如下图:
2 配置中心
Nacos可以方便地跟Spring、SpringBoot、SpringCloud、Docker、Dubbo、k8s等整合,本文主要使用SpringCloud来整合Nacos。
2.1 代码配置
1. 在配置文件中加入下面的依赖:
根据官网介绍,这里的 latest.version 对应 springboot 版本,比如 Nacos 2.1.x.RELEASE 版本对应 SpringBoot 2.1.x 版本,Nacos 2.0.x.RELEASE 版本对应 SpringBoot 2.0.x 版本。但x这个子版本号不一定要完全匹配,上面latest.version我本地SpringBoot使用2.1.6,Nacos使用2.1.4。
2. 添加一个bootstrap.properties文件,跟SpringBoot的配置文件放在一个目录下,在这个文件中增加下面配置:
在SpringCloud整合Nacos时,Nacos的dataId完整格式如下:
这里有两点需要注意:
- spring.profiles.active即为当前环境对应的 profile
当 spring.profiles.active 为空时,对应的连接符-也将不存在,dataId的拼接格式变成 ${prefix}.${file-extension}
- file-exetension为配置内容的数据格式,目前只支持properties和yaml类型。
上面的配置,对应的 dataId 为 example-dev.properties。
2.2 测试配置
如果要实现配置自动刷新,只需要在代码类上加一个注解@RefreshScope,如下面这段代码来自官网:
这时往Nacos写入一个配置,命令如下:
这时进入Nacos页面,可以看到上面插入的配置,如下图:
点击"详情",可以看到配置数据,如下图:
这时如果使用api调用上面ConfigController的get方法,会返回true。如果使用下面的命令修改useLocalCache的值,再次调用get方法,会返回false。
点击下图的示例代码,可以看到获取配置的代码,也就是上面Controller的代码。
3 注册中心
3.1 配置服务提供者
1. 在pom文件中增加配置,如下:
根据官网介绍,这里的latest.version对应springboot版本,比如Nacos 2.1.x.RELEASE版本对应SpringBoot 2.1.x版本,Nacos 2.0.x.RELEASE版本对应SpringBoot 2.0.x版本。这里我本地SpringBoot使用2.1.6,上面latest.version使用2.1.4。2. 在application.properties中增加下面配置:
3. 在SpringBoot启动类上加上注解@EnableDiscoveryClient。
4. 为了区分服务名称,配置服务名称如下:
3.2 配置服务调用者
跟服务提供者配置类似,这里修改配置名称如下:
3.3 测试
启动上面两个服务,登录Nacos页面,可以看到两个服务已经注册到Nacos。
在springboot-producer中增加一个Controller,代码如下:
在springboot-consumer中增加Feign调用,如下:
启动测试类,调用成功,返回"success"。
4 一个问题
由于我本地应用使用的数据库连接池是Hikaricp,修改配置中心的配置,通知本地应用时会报notify-error,日志上看是绑定数据库参数失败。这里应该改成druid连接池就可以了,有待验证。
