SpringCloud Nacos配置中心

简介: SpringCloud Nacos配置中心

1 配置中心介绍

1.1、配置中心介绍

问题

微服务架构下关于配置文件的问题:

配置文件相对分散

在一个微服务架构下,配置文件会随着微服务的增多变的越来越多,而且分散在各个微服务中,不好统一配置和管理。


配置文件无法区分环境

微服务项目可能会有多个环境,例如:测试环境、预发布环境、生产环境。每一个环境所使用的配置理论上都是不同的,一旦需要修改,就需要我们去各个微服务下手动维护,这比较困难。


配置文件无法实时更新

我们修改了配置文件之后,必须重新启动微服务才能使配置生效,这对一个正在运行的项目来说非常不友好。


配置中心的思路是:


首先把项目中各种配置全部都放到一个集中的地方进行统一管理,并提供一套标准的接口。

服务需要获取配置的时候,就来配置中心的接口拉取自己的配置。

配置中心参数有更新时,能够通知到微服务实时同步最新的配置信息,使之动态更新。

1.2、常见配置中心

1.2.1、Apollo

Apollo是由携程开源的分布式配置中心。特点有很多,比如:配置更新之后可以实时生效,支持灰度发布功能,并且能对所有的配置进行版本管理、操作审计等功能,提供开放平台API。并且资料 也写的很详细。


1.2.2、Disconf

Disconf是由百度开源的分布式配置中心。基于Zookeeper实现配置变更后实时通知和生效。


1.2.3、SpringCloud Config

Spring Cloud的配置中心组件。和Spring无缝集成,使用起来非常方便,配置存储支持Git。不过它没有可视化的操作界面,配置的生效也不是实时的,需要重启或去刷新。要结合SpringCloud Bus和消息队列才能完成配置实时刷新的功能。


1.2.4、Nacos

SpingCloud alibaba技术栈中的一个组件,前面我们已经使用它做过服务注册中心。其实它也集成了服务配置的功能,我们可以直接使用它作为服务配置中心。


2 基本配置和多环境配置

2.1、创建测试Controller

2.1.1、创建测试控制器

在service-sms微服务中创建SampleController


使用@Value读取配置信息

package com.oldlu.guli.service.sms.controller;
@RestController
@RequestMapping("/sms/sample")
public class SampleController {
    @Value("${aliyun.sms.signName}")
    private String signName;
    @GetMapping("test1")
    public R test1(){
        return R.ok().data("signName", signName);
    }
}

测试:http://localhost:8150/sms/sample/test1


2.1.2、测试2

使用@ConfigurationProperties读取配置信息


@Autowired
private SmsProperties smsProperties;
@GetMapping("test2")
public R test2(){
    return R.ok().data("smsProperties", smsProperties);
}

测试:http://localhost:8150/sms/sample/test2


2.2、接入配置中心

参考文档:https://github.com/alibaba/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/readme-zh.md


2.2.1、service中添加依赖

<!--配置中心-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

2.2.2、创建bootstrap.yml配置文件

bootstrap作为引导文件会优先于application文件的加载

spring:
  application:
    name: service-sms
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848 #nacos中心地址
        file-extension: yaml # 配置文件格式,如果是properties文件则不用配置此项

bootstrap文件先于application加载

properties的配置覆盖yml的配置

application的配置覆盖bootstrap的配置

2.2.3、在nacos中添加配置

20210204224417543.png


2.2.4、填写配置信息

Data ID: service-sms.yaml

0f7b64b06aa94a02868496e2ff952d5b.png

这个地方的配置信息的规则和你是否能找到唯一的配置文件相联系,也就是你要去配置中心必须于你的配置文件一致.


服务名.文件格式

**配置内容:**删除或注释本地的bootstrap.yml中的内容

server:
 port: 8150 # 服务端口
spring:
#  profiles:
#    active: dev # 环境设置
#  application:
#    name: service-sms # 服务名
 cloud:
   nacos:
     discovery:
       server-addr: localhost:8848 # nacos服务地址
#spring:
 redis:
   host: 192.168.100.100
   port: 6379
   database: 0
   password: 123456 #默认为空
   lettuce:
     pool:
       max-active: 20  #最大连接数,负值表示没有限制,默认8
       max-wait: -1    #最大阻塞等待时间,负值表示没限制,默认-1
       max-idle: 8     #最大空闲连接,默认8
       min-idle: 0     #最小空闲连接,默认0
#阿里云短信
aliyun:
 sms:
   regionId: cn-hangzhou
   keyId: 你的id
   keySecret: 你的secret
   templateCode: 你的code
   signName: oldlu

2.2.5、测试

重新启动service-sms测试从配置中心读取配置信息


2.2.6、配置中心优先

20210220203552502.png

20210220204325941.png


如果配置中心和当前应用的配置文件中都配置了相同的项目,优先使用配置中心中的配置



20210220204728399.png

2.3、配置动态刷新

如果修改了配置中心的配置,我们的程序无法读取到实时的配置信息,需要重新启动服务器,因此可以配置动态刷新。


2.3.1、添加注解

在controller类上配置下面的注解@RefreshScope,并重启服务器

@RefreshScope

2.3.2、修改配置

修改nacos注册中心的配置信息,无需重新启动服务器,配置即可生效


2.4、多环境配置

2.4.1、添加active属性

在bootstrap.yml中添加如下配置

#spring:  
  profiles:
    active: dev # 环境标识,test、prod等

2.4.2、添加配置配置文件

配置中心添加 service-sms-dev.yaml 配置文件,文件最后一部分的名字和环境标识保持一致

#阿里云短信
aliyun:
 sms:
   signName: oldlu

3 命名空间和配置分组

3.1、使用命名空间做环境隔离

3.1.1、创建命名空间

20210204224509627.png


3.1.2、克隆配置文件

在public命名空间中克隆文件到新的命名空间


20210204224523103.png


3.1.3、配置命名空间

默认情况下微服务读取配置中心中 public 命名空间中的配置文件,可以指定命名空间id使用特定命名空间中的配置

命名空间就是你区别你在那个空间或者那个位置一般看公司怎么定义.


20210204224535268.png


20210220210221845.png


20210204224548260.png

3.2、使用命名空间做微服务隔离

3.2.1、创建多配置文件

也就是同时加载几个配置文件


20210220212304270.png


20210220212318166.png

3.3、使用分组

3.3.1、创建分组


20210204224636814.png

20210204224653395.png


3.3.2、配置分组名称


20210204224705336.png

3.4、几个概念

3.4.1、命名空间

Namespace:命名空间可用于进行不同环境的配置隔离。可以按环境隔离,也可以按微服务隔离。


3.4.2、配置集

Data:所有配置的集合,在系统中,一个配置文件通常就是一个配置集。


3.4.3、配置集ID

Data ID:nacos中的配置文件名称,规范:微服务名称-环境名称.扩展名


3.4.4、配置分组

默认所有的配置集都属于DEFAULT_GROUP分组,不同的分组中可以有相同的配置文件名称。


目录
相关文章
|
2月前
|
存储 网络协议 Nacos
高效搭建Nacos:实现微服务的服务注册与配置中心
Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一款动态服务发现、配置管理和服务管理平台。它旨在帮助开发者更轻松地构建、部署和管理分布式系统,特别是在微服务架构中。
446 81
高效搭建Nacos:实现微服务的服务注册与配置中心
|
30天前
|
人工智能 安全 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应用,提升业务价值。
123 4
|
2月前
|
JSON Java Nacos
SpringCloud 应用 Nacos 配置中心注解
在 Spring Cloud 应用中可以非常低成本地集成 Nacos 实现配置动态刷新,在应用程序代码中通过 Spring 官方的注解 @Value 和 @ConfigurationProperties,引用 Spring enviroment 上下文中的属性值,这种用法的最大优点是无代码层面侵入性,但也存在诸多限制,为了解决问题,提升应用接入 Nacos 配置中心的易用性,Spring Cloud Alibaba 发布一套全新的 Nacos 配置中心的注解。
302 16
|
3月前
|
存储 Java Nacos
Spring Cloud+Nacos+KMS 动态配置最佳实践
本文讲述了 Spring Cloud 应用中结合 Nacos 实现了运行期配置动态更新的功能,以及在此基础上结合 KMS 在不改动代码的情况下对应用使用的敏感配置进行保护,解决将配置迁移到 Nacos 中可能存在的数据安全顾虑,并对其底层工作原理做了简单介绍。
711 22
|
3月前
|
监控 Java 测试技术
Nacos 配置中心变更利器:自定义标签灰度
本文是对 MSE Nacos 应用自定义标签灰度的功能介绍,欢迎大家升级版本进行试用。
475 18
|
2月前
|
负载均衡 Java 开发者
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
206 5
|
3月前
|
Java 网络安全 Nacos
Nacos作为流行的微服务注册与配置中心,其稳定性与易用性广受好评
Nacos作为流行的微服务注册与配置中心,其稳定性与易用性广受好评。然而,“客户端不发送心跳检测”是使用中常见的问题之一。本文详细探讨了该问题的原因及解决方法,包括检查客户端配置、网络连接、日志、版本兼容性、心跳检测策略、服务实例注册状态、重启应用及环境变量等步骤,旨在帮助开发者快速定位并解决问题,确保服务正常运行。
69 5
|
3月前
|
网络安全 Nacos 开发者
Nacos作为流行的微服务注册与配置中心,“节点提示暂时不可用”是常见的问题之一
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。然而,“节点提示暂时不可用”是常见的问题之一。本文将探讨该问题的原因及解决方案,帮助开发者快速定位并解决问题,确保服务的正常运行。通过检查服务实例状态、网络连接、Nacos配置、调整健康检查策略等步骤,可以有效解决这一问题。
54 4
|
3月前
|
Java 网络安全 Nacos
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。然而,实际使用中常遇到“客户端不发送心跳检测”的问题。本文深入探讨该问题的原因及解决方案,帮助开发者快速定位并解决问题,确保服务正常运行。通过检查客户端配置、网络连接、日志、版本兼容性、心跳策略、注册状态、重启应用和环境变量等步骤,系统地排查和解决这一问题。
73 3
|
3月前
|
安全 Nacos 数据库
Nacos是一款流行的微服务注册与配置中心,但直接暴露在公网中可能导致非法访问和数据库篡改
Nacos是一款流行的微服务注册与配置中心,但直接暴露在公网中可能导致非法访问和数据库篡改。本文详细探讨了这一问题的原因及解决方案,包括限制公网访问、使用HTTPS、强化数据库安全、启用访问控制、监控和审计等步骤,帮助开发者确保服务的安全运行。
147 3