微服务的概念性是很早之前听到的,但是没怎么接触过,在我看来可能就是把功能模块化,并且防止一个应用死了,然后项目不可用的尴尬局面,个人理解啊!
简单介绍下nacos,阿里巴巴开发的中间件,主要功能为配置中心和服务注册中心,这边文章说的是他的spring-cloud版本。
这是他的官方文档 https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html
这是docker部署的地址 https://hub.docker.com/r/nacos/nacos-server (服务我没搭建,坑没踩)
下面是个人理解的东西
a. 对于spring来说,配置文件同级目录下读取优先级为,bootstrap => application, 所以nacos配置都在bootstrap.yml中
b. 其次是spring-cloud-starter-alibaba-nacos-config
@NacosValue 以及 @NacosConfigurationProperties 注解值无法注入,在网上搜索你找不到太多的关于@NacosConfigurationProperties内容,@NacosValue可以找到,但也不符合要求
对于Nacos的配置中心来说,识别方式是命名空间(namespace) + dataId + group 来找到唯一的配置文件
我们加载boostrap.yml内容,然后优先执行配置中心发现配置功能,将nacos中配置请求到本地,然后本地存在snapshot(快照),并且放入spring的context中
这里不是很懂snapshot存在的意义,因为目前项目启动第一时间会连接server-addr,连接上了,才会执行下一步配置文件发现。
默认使用查找的DataId有三类
${spring.application.name}、${spring.application.name}.properties 以及 ${spring.application.name}-${spring.profiles.active}.properties
可以通过配置 prefix和file-extension 来改变这种方式
形成 ${prefix}-${spring.profiles.active}.${file-extension} 这样的DataId
这下面都是一些核心配置
spring: cloud: nacos: config: # namespace 启动通过配置 --spring.cloud.nacos.config.namespace来指定 namespace: e062e64e-8d9d-43cc-bf48-fa5c4dc4f735 server-addr: 192.168.1.202:8848 prefix: DATA_ID_GENERATOR file-extension: yaml refresh-enabled: true config-retry-time: 3 timeout: 3000 discovery: # 这个只要配套 @EnableDiscoveryClient 开箱即可用 server-addr: 192.168.1.202:8848 group: GROUP_GENERATOR # 心跳检测时间间隔,单位毫秒 heart-beat-interval: 5000 # 心跳检测请求超时时间,单位毫秒 heart-beat-timeout: 2000 namespace: e062e64e-8d9d-43cc-bf48-fa5c4dc4f735