Nacos 配置中心实战(一)

简介: Nacos 配置中心实战

环境:Nacos 1.4.2

什么是Nacos

一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

通俗解释就是:Nacos是一个注册中心&配置中心

关于Nacos注册中心的功能,在Nacos注册中心实战篇中,阿鉴已经给大家详细介绍了,今天我们就来看看配置中心如何使用吧~

基本使用

在介绍Nacos注册中心实战时,阿鉴已经介绍并搭建好了Nacos集群,这里就直接使用当时的Nacos集群了。

  1. 引入依赖
    my-goods项目引入config依赖
<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
  1. 编辑配置
spring:
  application:
    name: my-goods
  cloud:
    nacos:
      config:
        server-addr: 192.168.2.11:8850
        username: nacos
        password: nacos
  1. 在nacos新建配置文件并编写配置

由于我们的配置中并未指定命名空间,所以默认使用public命名空间

Data ID: 在什么都没有配置的情况下,Data ID为「服务名」或者「服务名.文件扩展名」,也就是my-goods或者my-goods.properties(我们也没有配置文件扩展名,默认为properties)

Group: 默认为DEFAULT_GROUP

配置格式:即为文件格式,默认为properties

配置内容:文件格式是properties, 配置内容即为properties格式写法

  1. 编写代码
@RestController
@RequestMapping("/goods")
public class GoodsController {
    @Value("${goods}")
    public String goods;
    @GetMapping("/config")
    public String config(){
        return "this goods is " + goods;
    }
}
  1. 启动服务测试

此时已经读取到远程的配置

动态配置

Nacos作为配置中心,将配置放在远端管理只是基础能力,更重要的是还提供了方便快捷的动态刷新配置功能。

  1. 修改代码
    要想使得配置具有自动刷新的能力,只需要在对应的类加上@RefreshScope注解即可
@RefreshScope
@RestController
@RequestMapping("/goods")
public class GoodsController {
    @Value("${goods}")
    public String goods;
    @GetMapping("/config")
    public String config(){
        return "this goods is " + goods;
    }
}
  1. 修改Nacos上的配置

    修改配置:apple -> banana

    发布完之后可以看到控制台中出现监听到配置变更的输出
2021-05-09 22:45:13.103  INFO 5930 --- [168.1.11_8850] c.a.n.client.config.impl.ClientWorker    : [fixed-114.116.212.76_8850] [polling-resp] config changed. dataId=my-goods, group=DEFAULT_GROUP
2021-05-09 22:45:13.104  INFO 5930 --- [168.1.11_8850] c.a.n.client.config.impl.ClientWorker    : get changedGroupKeys:[my-goods+DEFAULT_GROUP]
  1. 再次调用接口

可以看到配置已经发生了变更

进阶使用

增加服务环境

一般来说,在我们开发项目时,都会区分环境,比如开发环境、测试环境、生产环境,每个环境配置都会有些许不同,比如mysql配置。那我们就会在配置文件中增加以下配置:

spring:
  profiles:
    active: dev

此时Nacos将增加新的Data ID: 服务名-环境名.文件扩展名

即为 my-goods-dev.properties

  1. 修改代码
@RefreshScope
@RestController
@RequestMapping("/goods")
public class GoodsController {
    @Value("${goods}")
    public String goods;
    @Value("${price}")
    public String price;
    @GetMapping("/config")
    public String config(){
        return "this goods is " + goods + ", and price is " + price;
    }
}
  1. 新增配置

    增加一个新的data id 为my-goods-dev.properties配置

  2. 重启项目测试

优先级问题

如果在my-goods-dev.properties配置中增加goods=lemon的配置,那么此时my-goods的和my-goods-dev.propertiesgoods配置哪个会生效呢?

  1. my-goods-dev.properties中增加goods=lemon的配置

  2. 直接测试,此时无须重启项目

从测试结果看出,Nacos的优先级和Spring的优先级相同,带环境名的配置优先


目录
相关文章
|
19天前
|
负载均衡 应用服务中间件 Nacos
Nacos配置中心
Nacos配置中心
50 1
Nacos配置中心
|
15天前
|
监控 Java 测试技术
Nacos 配置中心变更利器:自定义标签灰度
本文是对 MSE Nacos 应用自定义标签灰度的功能介绍,欢迎大家升级版本进行试用。
|
18天前
|
网络安全 Nacos 开发者
Nacos作为流行的微服务注册与配置中心,“节点提示暂时不可用”是常见的问题之一
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。然而,“节点提示暂时不可用”是常见的问题之一。本文将探讨该问题的原因及解决方案,帮助开发者快速定位并解决问题,确保服务的正常运行。通过检查服务实例状态、网络连接、Nacos配置、调整健康检查策略等步骤,可以有效解决这一问题。
31 4
|
18天前
|
Java 网络安全 Nacos
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。然而,实际使用中常遇到“客户端不发送心跳检测”的问题。本文深入探讨该问题的原因及解决方案,帮助开发者快速定位并解决问题,确保服务正常运行。通过检查客户端配置、网络连接、日志、版本兼容性、心跳策略、注册状态、重启应用和环境变量等步骤,系统地排查和解决这一问题。
38 3
|
18天前
|
安全 Nacos 数据库
Nacos是一款流行的微服务注册与配置中心,但直接暴露在公网中可能导致非法访问和数据库篡改
Nacos是一款流行的微服务注册与配置中心,但直接暴露在公网中可能导致非法访问和数据库篡改。本文详细探讨了这一问题的原因及解决方案,包括限制公网访问、使用HTTPS、强化数据库安全、启用访问控制、监控和审计等步骤,帮助开发者确保服务的安全运行。
29 3
|
27天前
|
SQL 关系型数据库 数据库连接
"Nacos 2.1.0版本数据库配置写入难题破解攻略:一步步教你排查连接、权限和配置问题,重启服务轻松解决!"
【10月更文挑战第23天】在使用Nacos 2.1.0版本时,可能会遇到无法将配置信息写入数据库的问题。本文将引导你逐步解决这一问题,包括检查数据库连接、用户权限、Nacos配置文件,并提供示例代码和详细步骤。通过这些方法,你可以有效解决配置写入失败的问题。
53 0
|
2月前
|
负载均衡 Java Nacos
SpringCloud基础2——Nacos配置、Feign、Gateway
nacos配置管理、Feign远程调用、Gateway服务网关
SpringCloud基础2——Nacos配置、Feign、Gateway
|
3月前
|
安全 Nacos 数据安全/隐私保护
升级指南:从Nacos 1.3.0 到 2.3.0,并兼容 Seata 的鉴权配置
本文详细介绍了如何在微服务环境下从 Nacos 1.3.0 升级到 2.3.0,并确保 Seata 各版本的兼容性。作者小米分享了升级过程中的关键步骤,包括备份配置、更新鉴权信息及验证测试等,并解答了常见问题。通过这些步骤,可以帮助读者顺利完成升级并提高系统的安全性与一致性。
124 8
升级指南:从Nacos 1.3.0 到 2.3.0,并兼容 Seata 的鉴权配置
|
3月前
|
运维 Java Nacos
Spring Cloud应用框架:Nacos作为服务注册中心和配置中心
Spring Cloud应用框架:Nacos作为服务注册中心和配置中心
|
3月前
|
Kubernetes Nacos 微服务
【技术难题破解】Nacos v2.2.3 + K8s 微服务注册:强制删除 Pod 却不消失?!7步排查法+实战代码,手把手教你解决Nacos Pod僵死问题,让服务瞬间满血复活!
【8月更文挑战第15天】Nacos作为微服务注册与配置中心受到欢迎,但有时会遇到“v2.2.3 k8s 微服务注册nacos强制删除 pod不消失”的问题。本文介绍此现象及其解决方法,帮助开发者确保服务稳定运行。首先需检查Pod状态与事件、配置文件及Nacos配置,确认无误后可调整Pod生命周期管理,并检查Kubernetes版本兼容性。若问题持续,考虑使用Finalizers、审查Nacos日志或借助Kubernetes诊断工具。必要时,可尝试手动强制删除Pod。通过系统排查,通常能有效解决此问题。
79 0
下一篇
无影云桌面