献给Nacos小白的一篇好文:配置参数使用及存储

这篇具有很好参考价值的文章主要介绍了献给Nacos小白的一篇好文:配置参数使用及存储。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

配置参数使用及存储

Nacos可作为配置中心使用,主要为服务提供在线实时参数配置,也就是当我们修改nacos中的参数配置后,该配置可快速在服务中生效,做到在线及时灵活控制服务参数的作用,如:将数据库连接源中需要频繁调整的配置放在nacos中配置,我们可以修改相关配置项来灵活调配大数据量交互时数据源的瓶颈问题。

  1. 如何快速使用
  2. 数据如何存放
  3. 一些注意事项

一、如何快速使用

首先,我们需要依赖alibaba-nacos-config软包,如下:

<dependency>
    <groupId>
com.alibaba.cloud</groupId>
    <artifactId>
spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

其次,配置bootstrap.yml而不是application.yml,这是因为前者在Spring中初始化优先级更高,Nacos的在线实时参数配置需要bootstrap.yml的优先加载级别。当然,两个配置文件可同时使用,只需将配置部分放入bootstrap.yml即可,这里为了方便,仅使用了bootstrap.yml配置文件,如下:

spring:
  application:
    name:
provider-service
 
cloud:
    nacos:
      config:
       
### 服务配置地址及端口
        server-addr: 127.0.0.1:8848
       
### 指定配置前缀,默认为应用名
        prefix: ${spring.application.name}
       
### 指定配置文本格式,常用yaml
       
file-extension: yaml
       
### 指定配置所属命名空间
        namespace: 4d973c7e-0a7e-4488-8e45-83ee5441f9d9
       
### 指定配置所属的分组
        group: DEFAULT_GROUP

说明:

1、dataId格式

在nacos spring cloud配置中,是通过配置的dataId来精准定位配置内容的,而dataId的组成规则如下:

${prefix}-${spring.profiles.active}.${file-extension}

  1. prefix默认为spring.application.name,可通过spring.cloud.nacos.config.prefix自定义。
  2. spring.profiles.active则是当前环境profile,如果其为空,那么dataId格式变为${prefix}.${file-extension}
  3. file-extension为配置内容的格式,可通过spring.cloud.nacos.config.file-extension来指定,目前支持的格式有:text、json、xml、yaml、html及properties。

2、命名空间和分组

与服务注册&发现相同,服务加载配置也需要在指定的命名空间和分组中获取,如果服务和配置不在同一个命名空间和分组内,服务是获取不到配置参数,启动直接报无法解析字符错误。

最后,我们构建一个Person配置类,用来承载配置内容,如下:

@Component
@RefreshScope

public class Person {

   
@Value("${person.name}")
   
private String name;

   
@Value("${person.age}")
   
private int age;

   
@Value("${person.address}")
   
private String address;

     // getter&setter省略

}

注意:我们必须添加@RefreshScope注解,如果未添加该注解,是可以获取到配置的,但不能实时获取配置内容,也就失去了实时在线参数更新的意义。

然后,我们在provider空间中新增一个provider-service.yaml配置内容,指定其格式为yaml,效果如下:

献给Nacos小白的一篇好文:配置参数使用及存储

献给Nacos小白的一篇好文:配置参数使用及存储

我们编写个DemoController验证一下,内容如下:

@RestController
public class DemoController {
   
@Autowired
   
private Person person;

    @GetMapping(value = {"/test/config"})
   
public String hello() {
       
return JSON.toJSONString(person);
   
}
}

在浏览器中,访问接口:http://127.0.0.1:10001/test/config,返回结果内容如下:

{"address":"上海浦东新区新秀街129号B座102室a","age":88,"name":"张三"}

二、数据如何存放

这里介绍的是nacos以单例模式运行时,配置参数是如何存放的。我们知道当我们重启nacos后发现,之前配置的参数依然存在和生效,这是因为nacos的配置数据存放在其内嵌的derby数据库中,并且该数据库文件已本地化,所以重启后数据不丢失。

1、Derby数据库

Derby数据库采用纯java语言开发,是一个轻量级开源的可嵌入和独立使用的关系型数据库,其SQL使用与其它数据库,如:Oracle、MySQL及SqlServer等基本相同,一般被用作存取小量配置数据使用,这也是nacos选择其作为单例模式存储数据的原因。关于derby数据更多内容,若读者感兴趣,可自行查阅资料进行学习。

2、存放的位置

A、数据表config_info

nacos将配置的基本信息存放在config_info表中,如:dataId、分组、配置描述、配置格式及内容等。

B、数据表config_tags_relation

这张表用来存放一些高级配置参数,如;标签和归属应用等信息,可在nacos控制台UI中,通过他们来过滤查询配置。

C、数据表his_config_info

这张表nacos用来存放记录相关配置的日志记录,主要用来查询配置的历史信息,当然,nacos的配置历史数据是有时效的,如:只保留30天的历史数据。

D、数据表config_info_tag

该表用来维护某配置的若干标签基本信息,主要对配置基本信息config_info打了个标签。

E、数据表config_info_aggr

在当前nacos版本1.4.3中,这张表目前并未被使用,具体要看后续版本。

F、数据表config_info_beta

这张表是当我们勾选Beta发布选项后,输入对应下发IP地址(多个用,号分割)时,点击“发布Beta”发布后,对应的beta版配置信息存储在该表中,其是测试版本,与正式版本同时只能存在一个,一般使用较少,停止Beta发布后,实时配置参数即切换为正式版本。

说明:了解了以上数据存储内容后,当配置发生异常时,可快速定位相关的数据表进行问题排查,进而修复。

三、一些注意事项

1、配置文件命名

nacos配置中心相关配置需要放在bootstrap.yml中,而不是放在application.yml,否则会报无法解析相关配置字符错误,这是因为,在线参数实时配置需要更高的初始化优先级,而bootstrap.yml高于application.yml被优先解析加载。

2、命名空间隔离

与服务注册发现相同,如果服务属于某个namespace时,我们在为该服务配置参数时,必须将配置存储在与该服务同一个namespace和group中,否则报错无法解析配置参数。

3、配置的热更新

nacos的配置参数功能采用了发布/订阅模式,利用事件队列异步线程方式刷新配置数据,并结合RefreshScope机制,使得Bean参数配置实时热更新,即实现了服务配置实时更新。对于nacos如何结合RefreshScope实现配置参数热更新的,笔者会在后续内容单独进行介绍。

献给Nacos小白的一篇好文:配置参数使用及存储

 文章来源地址https://www.toymoban.com/news/detail-414398.html

到了这里,关于献给Nacos小白的一篇好文:配置参数使用及存储的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Springboot 实践(18)Nacos配置中心参数自动刷新测试

            前文讲解了Nacos 2.2.3配置中心的服务端的下载安装,和springboot整合nacos的客户端。Springboot整合nacos关键在于使用的jar版本要匹配,文中使用版本如下:         ☆ springboot版本:   2.1.5.RELEASE         ☆ spring cloud版本  Greenwich.RELEASE         ☆ spring clou

    2024年02月07日
    浏览(30)
  • Nacos新建配置报错:发布失败。请检查参数是否正确

    本文总结了nacos集群配置出现这个问题的几个解决办法。 第一步应该是看nacos日志,而不是其他。 由于前端配置返回失败,可以直接在logs目录下查看fatal级别日志: 如下 很明显,失败原因是字段gmt_create没有默认值,该字段建表时类型为datetime类型,在mysql中没有默认值,设置

    2024年02月11日
    浏览(45)
  • nacos新建配置或修改配置时,遇到错误 “发布失败。请检查参数是否正确。”

    在服务器用docker部署nacos时,遇到了这样的问题,其中弹窗提示内容如下: 提示内容为 nacos field ‘encrypted_data_key’ doesn’t have a default value 网上搜了一下这是nacos版本的问题,我使用的版本是nacos2.0.3。在nacos2.1.0以下的版本的MySQL数据库中的相应表是没有’encrypted_data_key’字段

    2024年02月16日
    浏览(52)
  • Docker部署nacos 添加配置文件提示: 发布失败。请检查参数是否正确。

    网络上解法一 :mysql和nacos的版本不对应导致 网络上解法二 :配置表缺少encrypted_data_key字段 执行建表语句从别人的博客中复制的sql,这两个字段初始化就是不允许为null; encrypted_data_key修改微允许为null即可; 备注: 以上只是我配置nacos的时候遇到的问题以及解决办法,希望

    2024年02月12日
    浏览(42)
  • docker 安装redis并设置密码,及nacos中配置redis参数。

    (123456 就是你设置的密码,,暴露端口号为6379 3.备注.为现有的redis 创建密码或修改密码:  进入redis的容器 docker exec -it 容器ID bash 进入redis目录 cd /usr/local/bin 运行命令:redis-cli 查看现有的redis 密码:config get requirepass 设置redis密码config set requirepass ***(***为你要设置的密码

    2024年02月14日
    浏览(30)
  • 网络规模与性能优化的一篇随笔

    本周写篇轻松的话题,注意信息传输的尺度和缩放比例,写篇随笔。 控制面和数据面随规模缩放的影响,举几个例子就能说明白。 CSMA/CD,控制面和数据面在一起,控制信息交互时延和数据面时延在同一尺度时,就到了极限,因为控制交互时延相对数据面时延更大的话,便可

    2024年02月05日
    浏览(25)
  • Docker安装nacos单机版,配置发布时报错:发布失败,请检查参数是否正确

    今天想模拟一下开发环境nacos路由发布时出现删除某一个路由配置会导致gateway不可用,由于开发环境一直在使用,为此自己使用docker搭建一下nacos想复现一下场景。 根据相关博客搭建完成后,自己新建配置时,点击发布,就报了错误\\\"发布失败,请检查参数是否正确\\\"。 “发布

    2024年02月09日
    浏览(40)
  • 关于stable diffusion的embedding训练的一篇随笔

    嗯,因为最近ai绘画很火啊,而且可以本地部署,很多人开始投喂ai然后画一些喜欢的东西,这是刚接触4天的笔记,那么我整理下目录,来展示一下这篇笔记都有什么吧。 1,绘画的和反向 2,调参,高清与面部修复 3,embedding模型的训练素材准备与原理建议 4,炼

    2024年02月04日
    浏览(36)
  • Git Actions自动发布部署,非最完善但足够理解和上手的一篇

    Git Actions自动发布部署,非最完善但足够完善和上手的一篇 文章最后附带完整代码链接 GitHub Actions是一个持续集成和持续交付(CI/CD)平台,允许您自动化构建、测试和部署管道。您可以创建构建和测试存储库中的每个拉取请求的工作流,或者将合并的拉取请求部署到生产中。

    2024年02月04日
    浏览(49)
  • Linux面试必备的红黑树问题,这可能是zui全的一篇了!

    原文网址:https://zhuanlan.zhihu.com/p/471318214 首先上一个红黑树知识点结构图 1.stl中的set底层用的什么数据结构? 2.红黑树的数据结构怎么定义的? 3.红黑树有哪些性质? 4.红黑树的各种操作的时间复杂度是多少? 5.红黑树相比于BST和AVL树有什么优点? 6.红黑树相对于哈希表,在

    2024年02月08日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包