Nacos配置中心搭建及动态刷新配置信息

Nacos配置中心搭建及动态刷新配置

前言

在系统开发过程中,开发者通常会将一些需要变更的参数、变量等从代码中分离出来独立管理,以独立的配置文件的形式存在。目的是让静态的系统工件或者交付物(如 WAR,JAR 包等)更好地和实际的物理运行环境进行适配。配置管理一般包含在系统部署的过程中,由系统管理员或者运维人员完成。配置变更是调整系统运行时的行为的有效手段。
  
1、配置文件的缺点
(1)生产环境的数据库的用户名和密码都配置在配置文件中,所有开发人员都能看到密码,这就造成了一定的安全隐患;

(2)配置文件修改之后服务必须重启才可以生效,若生产环境上有一个开关需要打开,修改完配置文件再重启服务,那风险太大了;

2、配置中心的特点

(1) 系统配置的集中管理(编辑、存储、分发)
(2) 动态更新不重启
(3) 回滚配置(变更管理、历史版本管理、变更审计)等所有与配置相关的活动。

nacos配置中心:系统配置的集中管理(编辑、存储、分发)、动态更新不重启、回滚配置(变更管理、历史版本管理、变更审计)等所有与配置相关的活动。

Nacos配置中心介绍

Nacos提供了两种服务,一种是用于服务注册、发现的Naming Service,一种是用于配置中心、动态配置的Config Service,而他们底层均由core模块来支持。外层提供OpenAPI供客户端使用,并提供了User Console、Admin Console方便用户使用 。

用户通过管理平台发布配置,通过HTTP调用将配置注册到服务端,服务端将之保存在MySQL等持久化存储引擎中;用户通过客户端SDK访问服务端的配置,同时建立HTTP的长轮询监听配置项变更,同时为了减轻服务端压力和保证容灾特性,配置项拉取到客户端之后会保存一份快照在本地文件中,SDK优先读取本地文件里的配置。当服务端的配置发生变更时,客户端会通过监听机制,拿到变更后的最新配置信息。

简单来说

  • Nacos 并不是通过推的方式将服务端最新的配置信息发送给客户端的,而是客户端维护了一个长轮询的任务,定时去拉取发生变更的配置信息,然后将最新的数据推送给 Listener 的持有者。

Nacos配置中心搭建

在这里插入图片描述

Nacos有分类管理的操作。抛出三个概念,namespace(命令空间)group(分组)dataid

  • dataid:Nacos 中的某个配置集的 ID。配置集 ID 是组织划分配置的维度之一。Data ID 通常用于组织划分系统的配置集。一个系统或者应用可以包含多个配置集,每个配置集都可以被一个有意义的名称标识。Data ID 通常采用类 Java 包(如 com.taobao.tc.refund.log.level)的命名规则保证全局唯一性。此命名规则非强制。这个概念来自于官方文档,就是配置文件的名字,相当于主键的作用
  • group(分组): Nacos 中的一组配置集,是组织配置的维度之一。通过一个有意义的字符串(如 Buy 或 Trade )对配置集进行分组,从而区分 Data ID 相同的配置集。当您在 Nacos 上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用 DEFAULT_GROUP 。配置分组的常见场景:不同的应用或组件使用了相同的配置类型,如 database_url 配置和 MQ_topic 配置。说人话,就是可以分组,不同的系统或微服务的配置文件可以放在一个组里。比如用户系统和订单系统的配置文件都可以放在同个组中。
  • 命名空间(namespace): 用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。

1.新建开发,测试,正式环境命名空间

在这里插入图片描述

服务分组

在这里插入图片描述

应用一

项目中总会有很多的提示语,客户对提示语要求提示的具体会频繁的调整提示语,我们把提示语调整到了properties文件中,如下格式:
user.login.error=用户名或者密码不正确!
也可以调整为yml格式

具体代码如下:

bootstrap.yml

server:
  port: 8070
spring:
  profiles:
    active: dev
  application:
    name: artical-clnews
  main:
    allow-bean-definition-overriding: true
  cloud:
    nacos:
      discovery:
        username: nacos
        password: nacos
        server-addr: 172.17.169.81:8848
        namespace: b561281a-fb95-411e-b75b-cf36bfc90854
        group: ATICAL_CLNEWS_DEV_GROUP
      config:
        server-addr: ${spring.cloud.nacos.discovery.server-addr}
        file-extension: properties
        namespace: ${spring.cloud.nacos.discovery.namespace}
        group: ${spring.cloud.nacos.discovery.group}

controller

@RestController
@RequestMapping("/cl-news")
@RefreshScope
public class ClNewsController {

    @Value("${user.login.error}")
    String errorInfo ;
   
 

    @GetMapping("/hello")
    public R hello() throws InterruptedException {

      
        return R.failed(errorInfo);
      
    }
  
}

启动服务,访问
同时修改配置中心提示语,访问连接提示语也进行更新,不用修改源代码便会升级服务。

yml

bootstrap.yml
file-extension修改为yml 其他不用修改

server:
  port: 8070
spring:
  profiles:
    active: dev
  application:
    name: artical-clnews
  main:
    allow-bean-definition-overriding: true
  cloud:
    nacos:
      discovery:
        username: nacos
        password: nacos
        server-addr: 172.17.169.81:8848
        namespace: b561281a-fb95-411e-b75b-cf36bfc90854
        group: ATICAL_CLNEWS_DEV_GROUP
      config:
        server-addr: ${spring.cloud.nacos.discovery.server-addr}
        file-extension: yml
        namespace: ${spring.cloud.nacos.discovery.namespace}
        group: ${spring.cloud.nacos.discovery.group}

新建配置
在这里插入图片描述
访问
{“code”:1,“msg”:“用户名或者密码不正确111!”,“data”:null}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值