04.微服务组件 Nacos配置中心

a. 统一配置管理

新增nacos配置

04.微服务组件 Nacos配置中心_第1张图片

04.微服务组件 Nacos配置中心_第2张图片

步骤一:引入nacos客户端管理依赖



    com.alibaba.cloud
    spring-cloud-starter-alibaba-nacos-config

步骤二:新建bootstrap配置文件(优先级高于application.yaml),并删除application配置文件相关nacos配置信息

spring:
	application:
		name: userservice # 服务名称
	profiles:
		active: dev #开发环境,这里是dev 
	cloud:
		nacos:
			server-addr: localhost:8848 # Nacos地址
      config:
        file-extension: yaml # 文件后缀名

步骤三:测试是否读取成功——添加业务逻辑,读取pattern.dataformat配置

@Slf4j
@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @Value("${pattern.dateformat}")
    private String dateformat;
    
    @GetMapping("now")
    public String now(){
        return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));
    }
    // ...略
}
b. 配置热更新

方式一:在@Value注入的变量所在类上添加注解@RefreshScope

@Slf4j
@RestController
@RefreshScope
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @Value("${pattern.dateformat}")
    private String dateformat;
    
    @GetMapping("now")
    public String now(){
        return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));
    }
    // ...略
}

04.微服务组件 Nacos配置中心_第3张图片

方式二:使用@ConfigurationProperties注解(新建配置类)

@Component
@Data
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {
    private String dateformat;
}
@Slf4j
@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    // 使用patternProperties这个类代替@Value
    @Autowired
    private PatternProperties patternProperties;

    @GetMapping("now")
    public String now(){
        return LocalDateTime.now().format(DateTimeFormatter.ofPattern(patternProperties.getDateformat()));
    }
}

--------------------------------

c. 多环境配置共享

其实微服务启动时,会去nacos读取多个配置文件,例如:

  • [spring.application.name]-[spring.profiles.active].yaml,例如:userservice-dev.yaml
  • [spring.application.name].yaml,例如:userservice.yaml。而[spring.application.name].yaml不包含环境,因此可以被多个环境共享。
  • 多种配置的优先级:nacos配置 (当前环境 > 共享环境) > 本地配置
d. 搭建Nacos集群

04.微服务组件 Nacos配置中心_第4张图片

第一步:初始化数据库 初始化数据库.sql

第二步:配置nacos

  • 进入nacos的conf目录,将cluster.conf.example配置文件重命名为cluster.conf:并添加IP地址
#example
127.0.0.1:8845
127.0.0.1.8846
127.0.0.1.8847 
  • 进入nacos的conf目录,修改application.properties文件,添加数据库配置
spring.datasource.platform=mysql

db.num=1

db.url.0=jdbc:mysql://localhost:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=123

第三步:复制三份nacos,并更改对应的端口 nacos/conf/application.properties

server.port=8847

第四步:分别启动三个nacos:startup.cmd

第五步:配置nigx——在conf/nginx.conf文件,新增如下内容

upstream nacos-cluster {
  server 127.0.0.1:8845;
  server 127.0.0.1:8846;
  server 127.0.0.1:8847;
}

server {
    listen       80;
    server_name  localhost;

    location /nacos {
        proxy_pass http://nacos-cluster;
    }
}

第六步:在userservice/bootstrap.yml配置文件中修改nacos地址

spring:
  cloud:
    nacos:
      server-addr: localhost:80 # Nacos地址    

你可能感兴趣的:(SpringCloud,微服务,java,springcloud)