上篇主要讲了使用eureka,zk,nacos当注册中心
这篇内容是nacos配置中心
代码改动部分mysql驱动更新到8.0,数据库版本升级到了8.0,nacos版本更新到了2.x
nacos2.x链接
链接:https://pan.baidu.com/s/11nObzgTjWisAfOplNuKP-Q?pwd=o93q
提取码:o93q
–来自百度网盘超级会员V7的分享
然后启动nacos,新建两个命名空间,它的作用是为了区分不同环境
再切换到配置列表,切换到dev的这个命名空间
点创建配置,创建一个配置文件,类型为yaml
他们的关系如下
Nacos默认的Namespace是public,Namespace主要用来实现隔离。
比方说我们现在有三个环境:开发、测试、生产环境,我们就可以创建三个Namespace,不同的Namespace之间是隔离的。
Group默认是DEFAULT_GROUP,Group可以把不同的微服务划分到同一个分组里面去
Service就是微服务:一个Service可以包含多个Cluster (集群),Nacos默认Cluster是DEFAULT,Cluster是对指定微服务的一个虚拟划分。
比方说为了容灾,将Service微服务分别部署在了杭州机房和广州机房,这时就可以给杭州机房的Service微服务起一个集群名称(HZ) ,给广州机房的Service微服务起一个集群名称(GZ),还可以尽量让同一个机房的微服务互相调用,以提升性能。
最后是Instance,就是微服务的实例。
然后我们启动一下这个服务,调用一下接口,可以看到,成功读取了配置
http://localhost:3377/config/info
简单使用的就说到这里
后面再说一下其他的
注:
1)不能使用原来的application.yml作为配置文件,而是新建一个bootstrap.yml作为配置文件;
2)在bootstrap和application数据项相同时,bootstrap中的配置不会被覆盖;
配置文件优先级(由高到低):
bootstrap.properties -> bootstrap.yml -> application.properties -> application.yml
配置动态刷新
在入门案例中,我们实现了配置的远程存放,但是此时如果修改了配置,我们的程序是无法读取到 的,因此,我们需要开启配置的动态刷新功能。
//只需要在需要动态读取配置的类上添加此注解就可以
@RefreshScope
后面再说一下配置共享
如果想在同一个微服务的不同环境之间实现配置共享,其实很简单。 只需要提取一个以spring.application.name 命名的配置文件,然后将其所有环境的公共配置放在里 面即可。
1 新建一个名为nacos-config-client.yamll配置,代表只要服务名是:nacos-config-client都能读到这个配置
不同微服务中间共享配置
不同为服务之间实现配置共享的原理类似于文件引入,就是定义一个公共配置,然后在当前配置中引入。
在nacos中定义一个DataID为all-service.yaml的配置,用于所有微服务共享
# nacos配置
server:
port: 3377
spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服务注册中心地址
config:
server-addr: localhost:8848 #Nacos作为配置中心地址
file-extension: yaml #指定yaml格式的配置
group: NACOS_GROUP
namespace: dev
#共享的配置
# shared-dataids: all-service.yaml # 配置要引入的配置
# refreshable-dataids: all-service.yaml # 配置要实现动态配置刷新的配置
ext-config:
- data-id: all-service.yaml
group: NACOS_GROUP
refresh: true