Nacos服务分级存储模型
① 一级是服务,例如userservice
②二级是集群,例如杭州或上海
③ 三级是实例,例如杭州机房的某台部署了userservice的服务器
配置实例集群属性
改变服务的yml文件
spring:
cloud:
nacos:
discovery:
cluster-name: HZ
NacosRule负载均衡
在调用模块的yml中添加
userservice:
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule
根据权重负载均衡
环境隔离(namespace)
配置管理
配置更改热更新
统一配置管理:
步骤:
1.引入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.在服务模块添加bootstrap.yml(优先级高于application. yml)
spring:
application:
name: userservice
profiles:
active: dev
cloud:
nacos:
server-addr: localhost:8848
config:
file-extension: yaml
执行步骤:项目启动-》读取nacos中配置文件(以bootstrap.yml为引导)-》读取本地配置文件application.yml-》创建spring容器-》加载bean
配置热更新
方法一:在@Value注入的变量所在类上添加注解@RefreshScope
java
@Slf4j
@RestController
@RequestMapping("/user")
@RefreshScope
public class UserController {
}
方法二:使用@ConfigurationProperties注解
java
package cn.itcast.user.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* PatternProperties
*
* @author huang
* @package cn.itcast.user.config
* @since 2024/3/1 19:36
*/
@Data
@Component
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {
private String dataformat;
}
之后要用自动装配把PatternProperties实例对象自动加载到要使用的地方
多环境配置共享
Data Id为服务名就是多环境配置共享
如果要分开发和发布环境,要加上-dev或-test之类的
配置优先级:服务名-profile.yaml >服务名称yaml>本地配置