使用 nacos 作为注册中心:
1.在父项目的maven配置文件中加入alibaba依赖:
1 2 3 4 5 6 7 8
| <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.2.5.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency>
|
2.在客户端服务的maven配置文件中加入client依赖:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <exclusions> <exclusion> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> </exclusion> </exclusions> </dependency>
<dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>2.1.0</version> </dependency>
|
3.客户端配置文件application.yml配置服务地址和名称
1 2 3 4 5 6 7 8
| spring: application: name: userservice profiles: active: dev cloud: nacos: server-addr: localhost:8848
|
nacos 服务器多级存储模型-集群配置
在客户端的配置文件中配置:
1 2 3 4 5 6 7 8 9 10
| spring: application: name: userservice profiles: active: dev cloud: nacos: server-addr: localhost:8848 discovery: cluster-name: CQ
|
nacos的负载均衡
在服务的调用者也就是消费方的配置文件中配置:
1 2 3
| userservice: ribbon: NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule
|
nacos服务器权重配置
可以在nacos的控制台,实例列表中进行编辑,修改权重配置。配置权重为0时则不被访问。
nacos 环境隔离
1.首先在nacos控制台的命名空间中新建一个命名空间,用来隔离环境。可以手动或自动生成命名空间的ID。
2.然后在客户端的配置中添加配置,设置命名空间。
1 2 3 4 5 6 7 8 9 10 11
| spring: application: name: userservice profiles: active: dev cloud: nacos: server-addr: localhost:8848 discovery: cluster-name: CQ namespace: 4d6ce343-9e1b-44df-a90f-2cf2b6b3d177
|
- namespace用来做环境隔离
- 每个namespace都有一个唯一ID
- 不同namespace的服务不可见。
nacos 实现配置中心
1.在nacos控制台中添加对应环境的配置文件。配置文件的DataId命名格式为:${prefix}-${spring.profile.active}.${file-extension},如userservice-dev.yaml
2.引入nacos配置中心依赖
1 2 3 4 5 6 7 8 9 10 11
| <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <exclusions> <exclusion> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> </exclusion> </exclusions> </dependency>
|
3.在服务的resource目录下创建bootstrap.yml文件,该文件为引导文件,优先级高于application.yml

1 2 3 4 5 6 7 8 9 10 11 12 13
| spring: application: name: userservice profiles: active: dev cloud: nacos: server-addr: localhost:8848 discovery: cluster-name: CQ namespace: 4d6ce343-9e1b-44df-a90f-2cf2b6b3d177 config: file-extension: yaml
|
服务端获取配置并实现热更新
1.可通过@Value({配置名})注解获取配置,并在该变量所在的类上添加@RefreshScope注解,实现配置热更新
1 2 3 4 5 6 7 8 9 10 11
| @Slf4j @RestController @RequestMapping("/user") @RefreshScope public class UserController {
@Autowired private UserService userService;
@Value("${pattern.dateformat}") private String dateformat;
|
2.可通过@ConfigurationProperties实现配置获取和热更新。
1 2 3 4 5 6 7 8
| @Data @Component @ConfigurationProperties(prefix = "pattern") public class PatternProperties { private String dateformat; private String envSharedValue; private String name; }
|
多环境配置
1.在nacos控制台中添加配置文件。名称为${prefix}.${file-extension}去掉环境。如userservice.yaml
2.配置文件优先级:
服务名-profile.yaml > 服务名.yaml > 本地配置