微服务部署下使用Nacos集成服务注册和发现,配置管理。
1、Spring Cloud整合Nacos注册中心
1.1、引入Nacos服务发现组件
1 | <!-- nacos discovery 服务发现组件--> |
1.2、下载Nacos Server并启动
- 下载Nacos Server 压缩包
https://github.com/alibaba/nacos/releases
- 启动 Server
进入解压后文件夹或编译打包好的文件夹,找到如下相对文件夹 nacos/bin,并对照操作系统实际情况之下如下命令,-m standalone
表示单机模式启动。
1 | # Linux/Unix/Mac 操作系统,执行命令 |
1.3、配置Nacos server地址和微服务名称
- 为每个微服务都配置Nacos Server 地址
在每个微服务应用的 /src/main/resources/application.yml配置文件中配置 Nacos Server 地址。
1 | spring: |
1.4、添加注解
为每个服务使用 @EnableDiscoveryClient 注解开启服务注册与发现功能。
1 |
|
1.5、访问Nacos Server后台
登录后台
http://localhost:8848/nacos/index.html#/login
用户名:nacos
密码:nacos
2、Spring Cloud整合Nacos配置中心
2.1、传统配置方式
- application.properties文件中定义两个配置:
1 | member.nickname = "jun" |
- 示例控制器中定义私有变量nickname和age,@value代表从配置中取值
1 |
|
- 示例控制器中定义方法:获取nick和age的值
1 |
|
- 测试结果
- 总结
从配置文件中获取配置。这种方式的缺点是什么呢?如果要修改配置参数,则需要重新启动服务。如果服务很多,则需要重启所有服务,非常不方便。
有没有什么办法不停服务修改配置而且使其生效呢?
答案:有的,用Spring Cloud Alibaba的Nacos 组件就可以完成。
2.2、引入Nacos config依赖
1 | <dependency> |
2.3、配置Nacos元数据
- 微服务下添加 /src/main/resources/bootstrap.properties 配置文件。
注意:bootstrap.properties 是系统级的,优先级高于其他配置文件, application.properties 是应用级别的,加载比较晚,其次是bootstrap.yml、application.yml,所以引入 Nacos 组件时,需要配置 bootstrap.properties
- 配置 Nacos Config 元数据。
需要配置Nacos的服务名,也就是对应Nacos管理平台的配置文件,和Nacos服务地址。
1 | spring.application.name=nacos-demo |
2.4、Nacos后台新增配置
Data ID: nacos-demo.properties
Group: DEFAULT_GROUP
配置格式:
1 | user.name="jun" |
2.5、开启动态刷新配置
添加注解@RefreshScope开启动态刷新配置功能。
1 |
|
日志:
1 | 2023-09-27 10:59:06.646 INFO 13252 --- [-127.0.0.1_8848] o.s.c.e.event.RefreshEventListener : Refresh keys changed: [user.name] |
user.name
更新了,通知了nacos-demo服务,刷新了配置。对应的配置id为nacos-demo.properties,分组为DEFAULT_GROUP。监听器为com.alibaba.cloud.nacos.refresh.NacosContextRefresher
测试结果: