“世人慌慌张张,不过图碎银几两,偏这碎银几两,能解万种惆怅,可保老人晚年安康,可护稚子入得学堂。可这碎银几两,断了儿时的梦想, 让少年染上沧桑,压弯脊梁。”
之前我们使用的注册中心时eureka,但eureka已经停止维护,netflix的很多产品都停止维护了,没办法我们就需要另寻别爱了。
nacos是阿里的开源项目,比起eureka有很多的好处,主要是在持续的更新。
nacos和eureka对比参考:https://www.jianshu.com/p/afd7776a64c6
今天我们来从eureka转移到nacos
注册中心
- 首先我们需要运行一个nacos服务器,目前应该是不能像eureka那样直接用spring boot部署,我们需要到gethub下载
https://github.com/alibaba/nacos/releases,然后到bin目录下即可看见运行的脚本,运行即可
然后访问ip:8848即可访问nacos注册中心,你也可以修改config目录下的application.properties的配置,修改端口等
然后我新建了了三个命名空间分别是dev,test,prod用来标识不同的开发环境 - 移除eureka的依赖,添加nacos的依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
- 修改配置,移除eureka的配置, 添加nacos的配置
spring:
profiles:
active: dev
cloud:
nacos:
discovery:
server-addr: ${settings.nacos.addr}
namespace: ${settings.nacos.namespace.${spring.profiles.active}}
##### nacos配置参数 ####
settings:
nacos:
addr: 192.168.31.37:38001
namespace:
dev: 190bfcff-e39e-42d7-ae87-af2690a4d409
这应该很容易就能看懂,namespace下的dev是我刚刚定义的,后面是dev的DataId,在nacos的命名空间中可以看见,
然后运行,在nacos的服务列表的dev空间下面即可看见注册的服务
配置中心
nacos不仅是注册中心,同时也是配置中心,相比spring cloud gateway它能更容易的实现配置的刷新
- 添加依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
- nacos添加配置文件
在nacos中添加我们的配置文件
点击加号即可添加配置,命名规则为${spring.application.name}.${spring.profiles.active}.${extension},就是微服务名称加开发环境加扩展名 - 服务添加配置,添加bootstrap.yaml配置文件,bootstrap的配置级别高于application
- 各种文件的加载顺序我在spring cloud gateway中已经写过了
spring:
application:
name: gmsj-auth
profiles:
active: dev
cloud:
nacos:
config:
server-addr: ${settings.nacos.addr}
namespace: ${settings.nacos.namespace.${spring.profiles.active}}
file-extension: yaml
shared-configs: shareConfig.yaml
refresh-enabled: true
# extension-configs:
# dataId:
# group:
# refresh: true
discovery:
server-addr: ${settings.nacos.addr}
namespace: ${settings.nacos.namespace.${spring.profiles.active}}
##### nacos配置参数 ####
settings:
nacos:
addr: 192.168.31.37:38001
namespace:
dev: 190bfcff-e39e-42d7-ae87-af2690a4d409
配置应该一看就懂,没有什么难的,我在nacos中给这个微服务添加配置,看能不能获取到
我就简单的添加一个端口,然后我们启动服务查看端口即可
可以看见我们的配置已经生效。在Located property source展示的是所有能加载的配置,这一点我觉得不太好,空的配置也展示出来了,也可能是我学的还不到家–。。。
- 动态更新配置
我们添加一个配置
就一个简单地test.word
然后我么在代码中测试一下
需要更新配置的类需要添加@RefreshScope注解
然后用postman调用,第一次是返回结果是hello,当我们修改nacos中word的值之后,可以在控制台看见配置更新了
然后不需要重启服务直接调用接口即可看见修改后的信息
然后接下来肯定就是公共配置了,毕竟很多很多配置都是公共的,如果需要更改,我们只需要修改公共的配置即可
- 添加配置,上面的配置文件中的shared-configs,顾名思义就是共享文件的配置,这个默认是在当前工作空间的默认分组(DEFAULT_GROUP)里面,
- 如果想要自定义分组就使用extension-configs配置,上面的配置文件注释掉的内容
将公共的配置添加到shareConfig.yaml中
然后启动服务在Located property source一栏日志即可看见我们的配置被加载了
over