——笔记源于黑马
使用Nacos
- 启动Nacos
startup.cmd -m standalone 单机启动Nacos
- 在父工程pom.xml引入依赖
<!--spring cloud alibaba-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
- 在微服务pom.xml中引入nacos客户端依赖
<!--Nacos客户端依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
- 在微服务application.yml中配置nacos地址
spring:
cloud:
nacos:
server-addr: localhost:8848 #nacos服务地址
配置集群和负载均衡
- 设置集群
spring:
cloud:
nacos:
server-addr: localhost:8848 #nacos服务地址
discovery:
cluster-name: HZ #配置集群名称
- 配置Nacos负载均衡
在服务使用者中添加配置
userservice:
ribbon:
NFloadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule #配置Nacos负载均衡策略
Nacos设置权重
点击编辑按钮设置权重
设置环境隔离
spring:
cloud:
nacos:
discovery:
namespace: xxx #命名空间ID
Nacos和Eureka的区别
设置是否是临时实例
spring:
cloud:
nacos:
discovery:
ephemeral: false #是否是临时实例
Nacos配置管理
-
在Nacos中新建统一配置
-
在微服务中引入nacos配置管理依赖
<!--Nacos客户端配置管理依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
- 新建bootstrap.yml 添加如下配置:
spring:
application:
name: userservice #服务名称
profiles:
active: dev #开发环境,这里是dev
cloud:
nacos:
server-addr: localhost:8848 #Nacos地址
config:
file-extension: yaml #文件后缀名
- 测试是否拿到nacos中的配置 UserController.java
@Value("${pattern.dateformat}")
private String dateformat;
@GetMapping("now")
public String now(){
return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));
}
访问http://localhost:8081/user/now显示结果
配置热更新
方式一:通过@Value注入,在UserController上加上@RefreshScope注解实现nacos配置热更新
方式二:通过@ConfigurationProperties(prefix = "pattern")注入,自动刷新