Nacos数据模型
Nacos领域模型,Namespace命名空间、Group分组、集群这些都是为了进行归类管理,把服务和配置文件进行归类,归类之后就可以实现一定的效果,比如隔离。对于服务来说,不同命名空间中的服务不能够互相访问调用
Namespace:命名空间,对不同的环境进行隔离,比如隔离开发环境、测试环境和生产环境。
Group:分组,将若干个服务或者若干个配置集归为一组,通常习惯一个系统归为一个组。
Service:某一个服务,比如商品微服务。
DataId:配置集或者可以认为是一个配置文件。
Namespace + Group + Service,如同Maven中的GAV坐标,GAV坐标是为了锁定Jar,而这里是为了锁定服务。
Namespace + Group + DataId,如同Maven中的GAV坐标,GAV坐标是为了锁定Jar,而这里是为了锁定配置文件
Namespace 代表不同的环境,如开发dev、测试test、生产环境prod
Group 代表某项目,比如圆心云项目
Service 某个项目中具体xxx服务
DataId 某个项目中具体的xxx配置文件
Nacos配置中心
1.创建命名空间
2.创建配置文件 写完后点击下面的发布然后返回既可,点击详情就可以看到我们刚刚配置的信息
3.在page项目中导入配置所需的依赖
<!-- 引入alibaba-nacos-config依赖,可以从Nacos配置中心获得配置信息 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
4.在page项目中添加配置信息,prefix默认为该项目的注册名称,可以省略,在创建文件的时候用服务名,并将该yml的文件名改为bootstrap(优先级更高),不然无法提前获取配置文件
spring: cloud: nacos: discovery: server-addr: 127.0.0.1:8848 config: server-addr: 127.0.0.1:8848 file-extension: yaml # prefix: aaa
5.新建配置类
import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RefreshScope//nacos自动刷新配置文件数据给客户端 @RestController @RequestMapping("config") public class NacosConfigController { @Value("${leq.username}") private String name; @RequestMapping("rote") public String roteString(){ return name; } }
6.重启该项目,访问rote接口
http://localhost:9100/config/rote
可以看到我们刚刚写的信息,然后将信息更改在次刷新,就可以看到我获取到的配置文件会实时刷新,比config的配置要简便许多,而且功能更强大
点击发布后,选择确认发布
7.配置多个配置文件,创建一个test1.yaml和test2.taml的配置文件,并查看数据
8.编写page中的配置文件,添加test1和test2 ,并在配置类中添加信息
import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RefreshScope//nacos自动刷新配置文件数据给客户端 @RestController @RequestMapping("config") public class NacosConfigController { @Value("${leq.username}") private String name; @Value("${leq.hello}") private String aaa; @Value("${leq.password}") private String bbb; @RequestMapping("rote") public String roteString(){ return name+",aaa:"+aaa+",bbb:"+bbb; } }
9.重启page项目,刷新刚刚访问的接口,可以看到我们刚刚添加的配置文件也能获取到,非常方便,数据也是会实时更新的