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

相关推荐
阿维的博客日记7 小时前
Spring Cloud 为什么需要服务注册与发现中心这些东西?
后端·spring·spring cloud
DolphinScheduler社区10 小时前
Apache DolphinScheduler 与 Spring Cloud Data Flow:差异与优势解析
spring·spring cloud·apache·海豚调度·大数据工作流调度
花花鱼15 小时前
Spring Framework 、Spring Boot 、 Spring Data 、Spring Cloud之间的关系简单说明
spring boot·spring·spring cloud
Devin~Y17 小时前
大厂 Java 面试实录:Spring Boot/Cloud、Kafka、Redis、JVM、K8s、RAG 一条龙(小Y翻车版)
java·jvm·spring boot·redis·spring cloud·kafka·kubernetes
花间相见18 小时前
【Docker】—— Docker常用操作与指令大全
spring cloud·docker·eureka
彩旗飘飘1 天前
手把手教你用 Spring Cloud Alibaba 搭建毕设级微服务架构:从单体到分布式的完整演进实录
spring cloud·微服务
Jul1en_2 天前
【SpringCloud】Eureka、Nacos 简单概念笔记
笔记·spring cloud·eureka
Devin~Y2 天前
大厂Java面试实战:Spring Boot/Cloud、Redis/Kafka、JVM调优与Spring AI RAG(内容社区UGC+AIGC客服场景)
java·jvm·spring boot·redis·spring cloud·kafka·mybatis
文慧的科技江湖2 天前
零碳园区综合管理平台PRD需求文档 - 慧知开源充电桩平台
spring cloud·微服务·开源·能源·慧知开源光储充管理平台·慧知开源光储充管理系统·零碳园区管理平台
Jul1en_2 天前
【SpringCloud】OpenFeign 与 Gateway 讲解与部署
spring·spring cloud·gateway