一,我们都知道,Nacos作用相当于springCloud中Eureka+Config
通过对比config的方式分析Nacos如何实现配置中心,以下为springCloud读取配置文件流程
1,config-service配置
在springCloud中配置信息是放在git上的,config-service配置git地址,即代码地址,如下
spring:
profiles:
active: develop #配置文件所在的目录
cloud:
config:
server:
git:
uri: http://gitlab.anji-allways.com/archives/config.git
searchPaths: develop #配置文件所在的目录(即哪个环境-开发环境)
label: master #配置文件所在的分支
username: maidi
password: maidi
如下图测试环境,config-service同样配置了多个环境
2,每个服务配置(bate测试环境为例)
创建多个环境文件
3,git上对应测试环境bate地址
二,Nacos实现配置中心
1,启动Nacos
请参考:https://mp.csdn.net/postedit/101538928
我们知道,springColud项目启动顺序为,启动Eureka,config,服务,config和服务先注册到Eureka,服务在通过config去git上读取服务配置。既然Nacos作用相当于springCloud中Eureka+Config,我们肯定是先启动Nacos,参考:https://blog.csdn.net/Mr_Errol/article/details/84935167。
启动后,访问:http://localhost:8848/nacos/#/login 用户名,密码nacos
页面如图:
2,配置流程
设想一个一般情况,开发时,我在本地启动一个服务,并从配置中心读取配置信息,该怎么做?通常做法
1)在resources下,创建dev文件,作为开发环境,在其下创建配置文件,如下图
配置内容详解:#端口,服务名,nacos地址,命名空间,文件后缀,环境标志
2)在nacos创建开发环境命名空间
3)在开发环境命名空间,创建服务配置文件,文件名规则:服务名(service-provider)+中划线+环境标识(dev),且环境标识必须,配置文件中也必须制定
4)在配置文件中配置具体信息,如nacos服务发现,数据源,redis,mybatis
所以读取配置流程应该是这样的,先从配置文件中的命名中间开始找,根据服务名和active环境,找具体的服务
3,配置信息
1)服务本地配置
#启动服务,并读取配置中心配置信息
server:
8070
#启动服务,并读取配置中心配置信息
spring:
application:
name: service-provider
cloud:
nacos:
config: # 读取配置中心配置文件,服务发现在配置文件中进行配置
server-addr: 127.0.0.1:8848
namespace: 'f3b66e3c-3dae-42f4-b409-4407fa5e1260'
prefix: ${spring.application.name}
file-extension: yaml
profiles:
active: dev
2)配置中心配置信息
useLocalCache: true
spring:
datasource:
url: jdbc:mysql://10.108.10.44:3306/payment?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf-8&useSSL=false
username: archives
password: Archives@1234
driver-class-name: com.mysql.jdbc.Driver
maxActive: 30
testOnBorrow: true
## 注册中心配置
cloud:
nacos:
discovery:
namespace: 'f3b66e3c-3dae-42f4-b409-4407fa5e1260'
server-addr: 127.0.0.1:8848
三,代码实现并测试
可以从git上拉去nacos结合springCloud实现实例代码
@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {
@Value("${useLocalCache:false}")
private boolean useLocalCache;
/**
* http://localhost:8080/config/get
*/
@RequestMapping("/get")
public boolean get() {
return useLocalCache;
}
//http://localhost:8080/config/get
}
访问地址:http://localhost:8080/config/get,查看配置文件配置信息
4,疑问
开发环境中,如果不创建dev文件,可直接从bootstrap.yml中读取开发环境配置,不创建dev文件有什么影响。