一 . Nacos配置管理
1.1.统一配置管理
当微服务部署的实例越来越多,达到数十、数百时,逐个修改微服务配置就会让人抓狂,而且很容易出错。我们需要一种统一配置管理方案,可以集中管理所有实例的配置。
Nacos一方面可以将配置集中管理,另一方可以在配置变更时,及时通知微服务,实现配置的热更新。
目的 : 微服务都是集群部署, 只需要在nacos 控制台 , 修改nacos的配置文件即可, 可以自动进行更新
将配置交给Nacos管理的步骤
- 1. 在Nacos中添加配置文件 注意:项目的核心配置,需要热更新的配置才有放到nacos管理的必要。基本不会变更的一些配置还是保存在微服务本地比较好。
- 2. 在微服务中引入nacos的配置管理客户端config依赖
<!--nacos配置管理依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
- 3. 在微服务中添加bootstrap.yml文件 , 这个文件是引导文件, 优先级高于application.yml , 配置nacos地址、当前环境、服务名称、文件后缀名。这些决定了程序启动时去nacos读取哪个文件
spring: application: name: userservice # 服务名称 profiles: active: dev #开发环境,这里是dev cloud: nacos: server-addr: localhost:8848 # Nacos地址 config: file-extension: yaml # 文件后缀名
- 4. 测试 : 读取nacos配置 在user-service中的UserController中添加业务逻辑,读取pattern.dateformat配置:
1.2.配置热更新
Nacos配置更改后,微服务中无需重启即可让配置生效,也就是配置热更新。要实现配置热更新,可以使用两种方式:当nacos配置中心要热更新多, 用方式二比较方便, 推荐使用
方式一 : 通过@Value注解注入,结合@RefreshScope来刷新 , 只有当配置中心热更新数据少的时候使用
方式二 : 通过@ConfigurationProperties注入,自动刷新 . prefix = "pattern" 这个pattern代表的是第二层级, dateformat属于第三层级
注意事项: 不是所有的配置都适合放到配置中心,维护起来比较麻烦 建议将一些关键参数,需要运行时调整的参数放到nacos配置中心,一般都是自定义配置
1.3.多环境配置共享
下面通过案例来测试配置共享
1.4.搭建Nacos集群(用不到)
二 .Feign远程调用 (必须会)
2.1.Feign替代RestTemplate
问题:
1、Feign调用只需要写接口就可以了,对不对?