Nacos配置管理
微服务的配置一旦更新则需要重启服务,但是在生产环境下服务器特别多,修改十分复杂。服务重启的影响也十分大。
Nacos:配置管理服务
在Nacos控制台中新建配置:填写配置名称【服务名称-环境.后缀】,yaml结尾,配置内容只填写核心有热更新需求的配置。
配置获取的步骤:
从bootstrap.yml【优先级比application.yml高】中先读取nacos地址,再读取nacos中的对应的配置文件【nacos中对应配置文件的名称可以从bootstrap.yml中的配置信息获得】,最后与本地配置文件合并。
统一配置管理
(1)引入Nacos的配置管理客户端依赖
<!--nacos配置管理依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
(2)在userservice中的resource目录添加一个bootstrap.yml文件,这个文件是引导文件,优先级高于application.yml:
spring: application: name: userservice # 服务名称 profiles: active: dev # 开发环境,这里是dev cloud: nacos: server-addr: localhost:8848 #nacos地址 config: file-extension: yaml #文件后缀名
【删除userservice配置文件中已经在bootsrap.yml中存在的配置】
验证是否能获取到nacos配置文件中的信息。
package cn.itcast.user.web; import cn.itcast.user.pojo.User; import cn.itcast.user.service.UserService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.format.DateTimeFormatter; @Slf4j @RestController @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @Value("${pattern.dateformat}") private String dateformate; @GetMapping("now") public String now(){ return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformate)); } /** * 路径: /user/110 * * @param id 用户id * @return 用户 */ @GetMapping("/{id}") public User queryById(@PathVariable("id") Long id) { System.out.println(id); return userService.queryById(id); } }
将配置交给Nacos管理的步骤
(1)在Nacos中添加配置文件,配置文件名为:服务名称-当前环境.文件后缀名
(2)在微服务中引入nacos的config依赖
(3)在微服务中添加bootstrap.yml,配置nacos地址、当前环境、服务名称、文件后缀名。
这些决定了程序启动时去nacos读取哪个文件