Spring Cloud Alibaba(五) Nacos Config 分布式配置中心

为什么Nacos Config?

在分布式系统中,由于服务特别的多,那是不是我的配置文件也特别的多,我总不可能要改配置就一个个改把,打个比方我需要修改数据库的地址账号密码等,我一个个提供方去改,这未免效率也太低了把(〃>皿<)

所以这个时候我们就需要Nacos Config

Nacos Config 介绍

Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos Config,您可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置。

如果有学习过Eureka 的Config应该就知道了.

就是Spring Cloud Config Server 和 Client 的代替方案,也就是Nacos 的 Config …

Nacos Config 的缺点: 没有提供配置的管理,还是我们需要自己去管理.

Nacos Config 的优点:
方便呀! 直接给你集成进了Nacos还不爽?嘻嘻. 其实在 Config Server的优点都有.

使用过程

POM

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>${latest.version}</version>
</dependency>

Nacos注册中心

进入Nacos中心 新建配置

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

创建名为 bootstrap.yml 的配置文件并删除之前创建的 application.yml 配置文件

知道config server的都知道,不删除还是会走自己这里的application.yml

注意:** Spring Boot 配置文件的加载顺序,依次为 bootstrap.properties -> bootstrap.yml -> application.properties -> application.yml ,其中 bootstrap.properties 配置为最高优先级

# 注意了 :  配置顺序不要放反了,不然会出问题

spring:
  application:
    #nacos配置文件的名字
    name: service-consumer-config

  cloud:
    nacos:
      config:
        #nacos的端口
        server-addr: localhost:8848
        #指明是什么格式,不加默认是propertes
        file-extension: yaml
        

搞定收工

在这里插入图片描述

附:扩展阅读

Endpoint 信息查看

Spring Boot 应用支持通过 Endpoint 来暴露相关信息,Nacos Config Starter 也支持这一点。在使用之前需要在 maven 中添加 spring-boot-starter-actuator 依赖,并在配置中允许 Endpoints 的访问。

{
    "subscribe": [
        {
            "jsonFromServer": "",
            "name": "service-consumer",
            "groupName": "DEFAULT_GROUP",
            "clusters": null,
            "cacheMillis": 1000,
            "hosts": [],
            "lastRefTime": 0,
            "checksum": "",
            "allIPs": false,
            "key": "service-consumer",
            "valid": true,
            "keyEncoded": "service-consumer"
        },
        {
            "jsonFromServer": "",
            "name": "service-provider",
            "groupName": "DEFAULT_GROUP",
            "clusters": null,
            "cacheMillis": 1000,
            "hosts": [],
            "lastRefTime": 0,
            "checksum": "",
            "allIPs": false,
            "key": "service-provider",
            "valid": true,
            "keyEncoded": "service-provider"
        }
    ],
    "NacosDiscoveryProperties": {
        "serverAddr": "192.168.141.132:8848",
        "endpoint": "",
        "namespace": "",
        "watchDelay": 30000,
        "logName": "",
        "service": "service-consumer",
        "weight": 1,
        "clusterName": "DEFAULT",
        "namingLoadCacheAtStart": "false",
        "metadata": {
            "preserved.register.source": "SPRING_CLOUD"
        },
        "registerEnabled": true,
        "ip": "192.168.141.1",
        "networkInterface": "",
        "port": 8080,
        "secure": false,
        "accessKey": "",
        "secretKey": ""
    }
}
{
    "NacosConfigProperties": {
        "serverAddr": "192.168.141.132:8848",
        "encode": null,
        "group": "DEFAULT_GROUP",
        "prefix": null,
        "fileExtension": "yaml",
        "timeout": 3000,
        "endpoint": null,
        "namespace": null,
        "accessKey": null,
        "secretKey": null,
        "contextPath": null,
        "clusterName": null,
        "name": null,
        "sharedDataids": null,
        "refreshableDataids": null,
        "extConfig": null
    },
    "RefreshHistory": [
        {
            "timestamp": "2019-06-30 18:30:45",
            "dataId": "service-consumer-config.yaml",
            "md5": "690fd78b5ae9fac5b545c1a8d7ec4e2b"
        },
        {
            "timestamp": "2019-06-30 18:22:08",
            "dataId": "service-consumer-config.yaml",
            "md5": "40b12ffc9d305ec1cad65d606e8f4708"
        }
    ],
    "Sources": [
        {
            "lastSynced": "2019-06-30 18:22:05",
            "dataId": "service-consumer-config.yaml"
        }
    ]
}

注意: Sources 表示此客户端从哪些 Nacos Config 配置项中获取了信息,RefreshHistory 表示动态刷新的历史记录,最多保存20条,NacosConfigProperties 则为 Nacos Config Starter 本身的配置

更多配置

配置项key默认值说明
服务端地址spring.cloud.nacos.config.server-addr
DataId前缀spring.cloud.nacos.config.prefixspring.application.name
Groupspring.cloud.nacos.config.groupDEFAULT_GROUP
dataID后缀及内容文件格式spring.cloud.nacos.config.file-extensionpropertiesdataId的后缀,同时也是配置内容的文件格式,目前只支持 properties
配置内容的编码方式spring.cloud.nacos.config.encodeUTF-8配置的编码
获取配置的超时时间spring.cloud.nacos.config.timeout3000单位为 ms
配置的命名空间spring.cloud.nacos.config.namespace常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源隔离等。
AccessKeyspring.cloud.nacos.config.access-key
SecretKeyspring.cloud.nacos.config.secret-key
相对路径spring.cloud.nacos.config.context-path服务端 API 的相对路径
接入点spring.cloud.nacos.config.endpointUTF-8地域的某个服务的入口域名,通过此域名可以动态地拿到服务端地址
是否开启监听和自动刷新spring.cloud.nacos.config.refresh.enabledtrue

更多介绍

Nacos为用户提供包括动态服务发现,配置管理,服务管理等服务基础设施,帮助用户更灵活,更轻松地构建,交付和管理他们的微服务平台,基于 Nacos, 用户可以更快速的构建以“服务”为中心的现代云原生应用。Nacos 可以和 Spring CloudKubernetes/CNCFDubbo 等微服务生态无缝融合,为用户提供更卓越的体验

配置文件动态刷新

例如:

这里我们使用 @Value 注解来将对应的配置注入到 某个类某个变量字段,并添加 @RefreshScope 打开动态刷新功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Cloud AlibabaSpring Cloud的一个子项目,它是阿里巴巴微服务生态的重要组成部分,提供了一系列基于Spring Boot和Spring Cloud的微服务组件,如服务注册与发现、配置管理、负载均衡、服务调用、熔断器等。而Nacos作为一个新兴的服务发现和配置中心,可以方便地进行服务治理。 Spring Cloud Alibaba整合Nacos的过程相对简单,只需要引入相关依赖,并在代码中使用对应的注解进行配置即可。 首先,在pom.xml文件中添加以下依赖: ```xml <!-- Nacos Discovery --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!-- Nacos Config --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> ``` 然后,在启动类上使用@EnableDiscoveryClient注解启用Nacos服务注册与发现功能: ```java @SpringBootApplication @EnableDiscoveryClient public class DemoApplication{ public static void main(String[] args){ SpringApplication.run(DemoApplication.class,args); } } ``` 接下来就可以使用@NacosValue注解注入配置信息: ```java @RestController public class DemoController{ @NacosValue(value="${config.key}",autoRefreshed=true) private String configValue; @GetMapping("/config") public String getConfig(){ return configValue; } } ``` 这样就可以通过Nacos Config来动态修改配置信息了。另外,Spring Cloud Alibaba还提供了一些其他有用的组件,如Sentinel、Seata等,可以方便地进行服务治理和分布式事务管理。 总的来说,Spring Cloud Alibaba整合Nacos是一个极为方便且实用的方式,它可以大大简化微服务应用的开发和部署,提高了系统的可靠性和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值