SpringCloud Alibaba学习(二):Nacos之服务配置中心

简介: SpringCloud Alibaba学习(二):Nacos之服务配置中心

一、基础配置



参考文档       Spring Cloud Alibaba Reference Documentation


1、新建模块


新建普通maven模块 cloudalibaba-config-nacos-client3377


2、修改pom文件


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>cloud</artifactId>
        <groupId>com.shang.cloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>cloudalibaba-config-nacos-client3377</artifactId>
    <dependencies>
        <!--nacos-config-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!--nacos-discovery-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--web + actuator-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--一般基础配置-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
</project>


3、编写yml文件


(1)bootstrap.yml


# 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格式的配置
# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
# 应该是 nacos-config-client-dev.yaml


(2)application.yml


1. spring:
2.   profiles:
3.     active: dev # 表示开发环境


(3)为什么要配置两个yml

     

Nacos同springcloud-config一样,在项目初始化时,要保证先从配置中心进行配置拉取,


拉取配置之后,才能保证项目的正常启动。


springboot中配置文件的加载是存在优先级顺序的,bootstrap优先级高于application。

     

其实学了config之后,这样的做法很容易理解。

 

4、编写主启动类


@EnableDiscoveryClient
@SpringBootApplication
public class NacosConfigClientMain3377 {
    public static void main(String[] args) {
        SpringApplication.run(NacosConfigClientMain3377.class, args);
    }
}


5、编写业务逻辑代码

     

通过springcloud的原生注解 @RefreshScope  来实现配置的自动刷新。

@RestController
@RefreshScope   //在控制器类加入@RefreshScope注解使当前类下的配置支持Nacos的动态刷新功能。
public class ConfigClientController {
    @Value("${config.Info}")
    private String configInfo;
    @GetMapping("/config/info")
    public String getConfigInfo(){
        return configInfo;
    }
}



6、在Nacos中添加配置信息


(1)Nacos中的配置规则


24b4813eadc541589c01dda99c7b1917.png6940d1b14fbd47449e519afd5d8e15e5.png


所以我们的DataId应为 nacos-config-client-dev.yaml


(2)配置新增


1c420c227d094589b58bce711cab7932.pngb31ec778aba34413a89021e7949e2697.png


然后点击发布。

a4ba7f8675994dfa9f280a7d0eb0ff98.png


7、启动测试

     

启动3377

     

访问        http://localhost:3377/config/info

99f3d034bcc6467195fd39ab09bb5663.png


读取到了我们之前写在Nacos里的配置


8、Nacos自带动态刷新

     

修改配置文件

117a12f06cce46dba1e51cf84a880345.png


修改好后只需刷新页面即可获取新的配置文件

     

简直比config方便太多!!!

 

二、分类配置


     

现在有两个问题:


问题1:

     

实际开发中,通常一个系统会准备:


dev开发环境


test测试环境


prod生产环境。


如何保证指定环境启动时服务能正确读取到Nacos上相应环境的配置文件呢?


问题2:


一个大型分布式微服务系统会有很多微服务子项目,每个微服务项目又都会有相应的开发环境、测试环境、预发环境、正式环境......。那怎么对这些微服务配置进行管理呢?  


1、Nacos中的配置管理

               

Namespace+Group+Data ID

249498eaa82f47d09bef34e76b0a1553.png


类似Java里面的package名和类名

       

最外层的namespace是可以用于区分部署环境的,Group和DataID逻辑上区分两个目标对象。


9856c908793e4a1cbaebacb4cd8e6eb3.png


默认情况:

     

Namespace=public,Group=DEFAULT_GROUP, 默认Cluster是DEFAULT

     

Nacos默认的命名空间是public,Namespace主要用来实现隔离。

     

比方说我们现在有三个环境:开发、测试、生产环境,我们就可以创建三个Namespace,不同的Namespace之间是隔离的。

     

Group默认是DEFAULT_GROUP,Group可以把不同的微服务划分到同一个分组里面去

     

Service就是微服务;一个Service可以包含多个Cluster(集群),Nacos默认Cluster是DEFAULT,Cluster是对指定微服务的一个虚拟划分。


比方说为了容灾,将Service微服务分别部署在了杭州机房和广州机房,这时就可以给杭州机房的Service微服务起一个集群名称(HZ),给广州机房的Service微服务起一个集群名称(GZ),还可以尽量让同一个机房的微服务互相调用,以提升性能。


2、DataID方案加载配置

       

指定spring.profile.active和配置文件的DataID来使不同环境下读取不同的配置。


1)新建配置

               

我们新建一个nacos-config-client-test.yaml


7707ddc069644d62989403cd7cfe128a.png


(2)修改application.yml

               

然后在idea的3377模块中把active改为test

0ae45f1f931345e78e18e47b624be999.png

(3)测试

               

访问        http://localhost:3377/config/info

2178ada14b0b46e2873399aa9427f338.png


发现读取到的是test的配置文件。

     

这就说明我们可以通过更改active的值指定读取的配置文件。

 

3、Group方案加载配置


(1)新建配置      

               

新建一个Group为DEV_GROUP的配置

37da2bb66475428a926b819baad70fa1.png


 再新建一个Group为TEST_GROUP的配置

df630376ba744d75aa866e678cd7810b.png


然后就可以在配置列表里看到两个Data Id相同,Group不同的配置

8f1eb5f793a24daa9836054e4f903aed.png


(2)修改bootstrap.yml和application.yml

             

appcation.yml:

8def079969bf4a8bbbb39ec95a9e615d.png

bootstrap.yml:

d5e2b06b656d45a4a83f5b7c2aeedb57.png


(3)运行测试

8dc0975b469c4491a376f1ebec459be4.png


4、命名空间方案加载配置


(1)新建命名空间

                       新建dev命名空间

66692f39dc57480583883fb72e9bece0.png


再用同样方法新建test命名空间

             

建好了之后,点击配置列表,上方会出现新建的命名空间

a3b1cb75951e490f9a1a7f5bbdb52562.png


(2)bootstrap.yml


f4ab49a529ba49af946302d52cbcf186.png


namespace后的id为:

fba091181cdc4c849df058a29c37000b.png


(3)在新建的namespace下新建配置

efa44d17eec74d9d98968b44721cb936.png


后面的操作即和前面一样。

相关文章
|
8天前
|
人工智能 安全 Java
AI 时代:从 Spring Cloud Alibaba 到 Spring AI Alibaba
本次分享由阿里云智能集团云原生微服务技术负责人李艳林主讲,主题为“AI时代:从Spring Cloud Alibaba到Spring AI Alibaba”。内容涵盖应用架构演进、AI agent框架发展趋势及Spring AI Alibaba的重磅发布。分享介绍了AI原生架构与传统架构的融合,强调了API优先、事件驱动和AI运维的重要性。同时,详细解析了Spring AI Alibaba的三层抽象设计,包括模型支持、工作流智能体编排及生产可用性构建能力,确保安全合规、高效部署与可观测性。最后,结合实际案例展示了如何利用私域数据优化AI应用,提升业务价值。
|
1月前
|
存储 SpringCloudAlibaba Java
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论。
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
|
19天前
|
人工智能 自然语言处理 Java
Spring Cloud Alibaba AI 入门与实践
本文将介绍 Spring Cloud Alibaba AI 的基本概念、主要特性和功能,并演示如何完成一个在线聊天和在线画图的 AI 应用。
227 7
|
28天前
|
存储 网络协议 Nacos
高效搭建Nacos:实现微服务的服务注册与配置中心
Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一款动态服务发现、配置管理和服务管理平台。它旨在帮助开发者更轻松地构建、部署和管理分布式系统,特别是在微服务架构中。
303 81
高效搭建Nacos:实现微服务的服务注册与配置中心
|
1月前
|
JSON Java Nacos
SpringCloud 应用 Nacos 配置中心注解
在 Spring Cloud 应用中可以非常低成本地集成 Nacos 实现配置动态刷新,在应用程序代码中通过 Spring 官方的注解 @Value 和 @ConfigurationProperties,引用 Spring enviroment 上下文中的属性值,这种用法的最大优点是无代码层面侵入性,但也存在诸多限制,为了解决问题,提升应用接入 Nacos 配置中心的易用性,Spring Cloud Alibaba 发布一套全新的 Nacos 配置中心的注解。
240 13
|
2月前
|
监控 Java 测试技术
Nacos 配置中心变更利器:自定义标签灰度
本文是对 MSE Nacos 应用自定义标签灰度的功能介绍,欢迎大家升级版本进行试用。
267 12
|
2月前
|
负载均衡 应用服务中间件 Nacos
Nacos配置中心
Nacos配置中心
165 1
Nacos配置中心
|
2月前
|
Java 网络安全 Nacos
Nacos作为流行的微服务注册与配置中心,其稳定性与易用性广受好评
Nacos作为流行的微服务注册与配置中心,其稳定性与易用性广受好评。然而,“客户端不发送心跳检测”是使用中常见的问题之一。本文详细探讨了该问题的原因及解决方法,包括检查客户端配置、网络连接、日志、版本兼容性、心跳检测策略、服务实例注册状态、重启应用及环境变量等步骤,旨在帮助开发者快速定位并解决问题,确保服务正常运行。
61 5
|
2月前
|
网络安全 Nacos 开发者
Nacos作为流行的微服务注册与配置中心,“节点提示暂时不可用”是常见的问题之一
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。然而,“节点提示暂时不可用”是常见的问题之一。本文将探讨该问题的原因及解决方案,帮助开发者快速定位并解决问题,确保服务的正常运行。通过检查服务实例状态、网络连接、Nacos配置、调整健康检查策略等步骤,可以有效解决这一问题。
47 4
|
2月前
|
Java 网络安全 Nacos
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。然而,实际使用中常遇到“客户端不发送心跳检测”的问题。本文深入探讨该问题的原因及解决方案,帮助开发者快速定位并解决问题,确保服务正常运行。通过检查客户端配置、网络连接、日志、版本兼容性、心跳策略、注册状态、重启应用和环境变量等步骤,系统地排查和解决这一问题。
63 3

热门文章

最新文章