Nacos服务注册和配置中心(Config,Eureka,Bus)2

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 ,并在配置类中添加信息

java 复制代码
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项目,刷新刚刚访问的接口,可以看到我们刚刚添加的配置文件也能获取到,非常方便,数据也是会实时更新的

相关推荐
半旧夜夏11 小时前
【保姆级】微服务组件环境搭建(Docker Compose版)
java·linux·spring cloud·微服务·云原生·容器
Devin~Y18 小时前
从内容社区到AIGC客服:Spring Boot、Redis、Kafka、K8s、RAG的三轮大厂Java面试对话(附标准答案)
java·spring boot·redis·spring cloud·kafka·kubernetes·micrometer
西凉的悲伤19 小时前
Spring Boot 、Spring Cloud 微服务架构认证授权方案
spring boot·spring cloud·微服务·架构·认证授权
西凉的悲伤2 天前
Spring Cloud Gateway介绍
java·spring cloud·gateway
JAVA社区2 天前
Java高级全套教程(十)—— SpringCloudAlibaba超详细实战详解
java·开发语言·spring cloud·面试·职场和发展
JAVA社区3 天前
Java高级全套教程(九)—— SpringCloud超详细实战详解
java·开发语言·后端·spring cloud·面试·职场和发展
Devin~Y3 天前
大厂Java面试实录:Spring Boot/Cloud、Kafka、Redis、K8s 可观测性 + RAG/Agent(小Y翻车版)
java·spring boot·redis·spring cloud·kafka·kubernetes·mybatis
菜萝卜子3 天前
【Docker】Harbor 代理缓存(Pull-Through Cache)配置与使用指南
spring cloud·云原生·eureka
苏渡苇3 天前
Spring Cloud Gateway 网关限流
spring cloud·gateway·springboot·网关限流