一:Nacos 介绍
nacos整合springcloud 主要是用来做动态配置服务和服务发现管理的,更详细的介绍我就不说了 感兴趣的可以去看官网 中文介绍很友好
https://nacos.io/zh-cn/
二:Nacos 服务注册中心
1.首先引入依赖(将服务注册到nacos中去)
<!-- 服务注册/发现-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>0.2.2.RELEASE</version>
</dependency>
<!-- 调用远程服务时引入-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2.启动nacos 客户端
在配置文件中加上
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
application:
name: gulimall-member (应用名 随便取即可 )
若只想把服务注册上去, 在启动类上加入 @EnableDiscoveryClient 注解即可
若想通过nacos 远程调用别的注册在nacos 上的服务 则还需要在启动类上加
@EnableFeignClients(basePackages = “com.lcx.gulimall.member.feign”)
“()” 里不写 默认全局扫描3.初始化两个springboot 项目 注册到服务中心
注意:如果配置了 basePackages 调用远程服务的接口 必须写在该包下
启动后 在nacos服务列表中发现 即为注册成功
4.编写远程调用接口5. 在调用端 编写一个 controller 调用CouponFeignService接口里面的方法
启动测试即可
三:Nacos 动态配置
1.使用nacos作为配置中心统一管理配置
引入依赖(这里我使用的是springcloud G 版本 注意和你的版本对应)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>0.2.2.RELEASE</version>
</dependency>
2.在resource文件夹下 创建一个bootstrap.yml 文件(.properties文件也可,名字要一样)
spring:
application:
name: gulimall-gateway
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848 #你的nacos地址
- 按下图步骤新建一个
data Id 就是你上面配置的应用名+.yml 或者.properties 后缀 项目在启动时会自动找到这个配置文件 并加载配置信息启动端口是88 到这里 我们就从配置中心 读取配置成功了
4.使用指定名称空间,在实际开发过程中,我们会有多种生产环境 如 dev,test,prod 等 所以我们就可以在nacos 中多建几个名称空间 根据不同的环境 读取不同名称空间下的配置文件 就会方便很多
在bootstrap.yml 中加上 就可以加载指定名称空间下的配置文件 如需指定分组
仅需要在配置文件中加上最后一句话即可
spring:
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
namespace: bc98c568-47a7-457e-af1d-6711436d7515
group=你的组名
加载多个配置文件,在实际开发中 我们有时配置文件太大 我们把它抽取成几个配置文件夹,启动时把他们加载进来如 我在我的名称空间下 dev 组 新建了 关于datesource.yml, mybatis.yml 以及other.yml在配置文件中加上,多个配置文件 以数组形式来写(这里是.properties文件)
ps:如需开启动态刷新效果 在需要读取配置文件内容的类上加上@RefreshScope 注解即可
#指定加载那个配置文件 多选 指定加载多个配置文件
spring.cloud.nacos.config.ext-config[0].data-id=datesource.yml
#指定加载的是那个分组下的
spring.cloud.nacos.config.ext-config[0].group=dev
#是否开启自动刷新 默认是false
spring.cloud.nacos.config.ext-config[0].refresh=true
spring.cloud.nacos.config.ext-config[1].data-id=mybatis.yml
spring.cloud.nacos.config.ext-config[1].group=dev
spring.cloud.nacos.config.ext-config[1].refresh=true
spring.cloud.nacos.config.ext-config[2].data-id=other.yml
spring.cloud.nacos.config.ext-config[2].group=dev
spring.cloud.nacos.config.ext-config[2].refresh=true
细节
1.命名空间 :配置隔离
默认public(保留空间):默认所有新增的配置都在
1.开发 ,测试,生产 :利用命名空间来做环境隔离
注意:在bootstrap.properties 配置文件中,配置需要使用那个命名空间下的配置
默认是public
spring.cloud.nacos.config.namespace=506dc447-e866-4e32-814d-200d5f1f382b
2.每一个微服务之间互相隔离,每一微服务都创建自己的命名空间,只加载自己命名空间下的所有配置
2.配置集 :所有配置的集合
3.配置集ID :DATA ID :类似文件名
4.配置分组: 默认所有的配置集都属于 DEFAULT_GROUP
组名自己取
每个微服务创建自己的命名空间,使用配置分组区分环境,dev , test , prod
三 同时加载多个配置集
1) 微服务任何配置信息,任何配置文件都可以放在配置中心中
2) 只需要在bootStrap.properties说明加载配置中心那些配置文件即可
3) @Value,@ConfigurationProperties 都可以 以前springboot 任何获取配置文件中的值 都可以使用
*/