nacos 配置管理中心 -- 小白学习教程

本贴最后更新于 1877 天前,其中的信息可能已经天翻地覆

学习于:https://nacos.io/zh-cn/docs/what-is-nacos.html 潘孝哥
小贷最近要迁移到新框架上,所以我来尝试一波 nacos.

首先看它的作用:用来配置参数的,就比如我们通常在 properties 文件中写的

dubbo.protocol.id = dubbo

dubbo.protocol.name = dubbo
#dubbo.protocol.port = 20882
#RegistryConfig Bean
dubbo.registry.id = lls-nacos-sample-service-registry
dubbo.registry.address = nacos://172.16.90.191:8848
dubbo.registry.parameters.namespace = 59b4250f-e36f-46f8-938d-20a5b295c63e
dubbo.metadata-report.address = nacos://172.16.90.191:8848
dubbo.metadata-report.parameters.namespace = c69d33cb-2e87-4b29-8383-3ce4059e6096

这些东西都是可以在 nacos 中进行配置。这样的话,本地就不需要存储大多数的配置参数了。
nacos 的优势:
1.最重要的优势:动态修改属性值。
2.方便控制多个服务的共享属性值和私有属性值
3.去掉了很多的配置文件,而且易于搭载在各种系统中,如 spring,springboot.

后面来慢慢讲解这些优势:
先来个最基本的理解:我们要取值的时候,一般从 3 个地方取,一个是启动参数 -D ,第二个是 xml 文件,第三个是 properties 文件。 现在我们多了一个地方,就是 nacos 服务器。
这个-D 是比较牛逼的,无论你 nacos 上的初始值是啥,只要-D 上的和你一样,那么刚开始就要以- D 上的为准。不过,如果之后你在 nacos 上再进行发布,那么就算你是-D,也要乖乖听我号令。这样就充分保证了 nacos 的霸主地位(经过实验验证,这里要注意啊,你在 nacos 上发布得要经过修改后发布啊,原模原样发布无法改变!只要字符串没发生变化,发布就无法改变值
然后到 properties 文件,这个和-D 的实验现象一致。
然后-D 的优先级高于 properties 文件的优先级。
至于 xml 文件的,这个应该是定一个 xml 文件,然后 properties 标签定义几个值即可测试,但是我一致没找到它的 xml 文件声明,大家有机会的可以试试。

然后是基本的使用了:
这个主要参考 nacos 的官方文档即可。无论你是 spring 还是 springboot 项目都是可以轻轻松松搭载上去。

这里对一些东西做理解:
以潘孝哥的 demo 为例:
image.png
由于 properties 文件默认被 spring boot 加载,然后首先读取的就是这些配置。这个是用来连接 nacos 服务器的。第一个是服务器地址,第二个是连接的命名空间的标识符。
image.png
也就是在命名空间里就进行了区分。这个存储空间就第一个分隔开来。

然后是第二个:启动类上的配置:
image.png
这里的 dataid 就是前面命名空间里的一个存储空间。
image.png
这里又进行了一次数据存储区域的划分。这就表示你这个启动类要使用的是那个 dataid 里面的数据。

所以现在大概的启动流程是这样的:
启动先读取 nacos 连接的配置,然后连接到相应的命名空间,然后再根据启动类的 dataid 设置,确认此服务连接的是那个 dataid 的数据。然后这里注意后面的 after 标签,apply-service 的 after 为 common,也就是说优先级是 comon 的高,所以 comon 和 apply-service 中有相同的数据时,以 comon 的为准。这个从潘孝哥的测试数据也可以的得知。

然后就看使用:
image.png
这里也支持 spring 原生注解 value 的使用,不过它默认的是不会自动刷新,而上面的 nacosvalue 则配置有 autofresh=true,也就是说 nacos 上刷新,则这里的值也会改变。

这里注意的是,第二个 demovalue 只会在启动时读取一次配置中的 demovalue 的值,后面都不会再改变。

嗯,大概就是这样的一个使用过程。然后看潘孝哥的设计,猜测是以后可以将大部分的配置都放在 nacos 上,这样就非常有利于开发。可以一个服务连接多哥 dataid,然后设置公共的 data(比如 dubbo 的配置之类的,几个服务使用的 dubbo 配置都是一样的),然后再设置私有的。 这里还可以方面的设置优先级,调控起来非常好。

因为它可以动态修改属性值,而不需要修改配置文件,修改配置文件的话,要使 properties 文件生效,则需要重启服务,这样就很麻烦。 而再比如最原始的,把属性值直接定义在 Java 文件中,用 static final 修饰,这是一种更不可取的行为,因为此时如果要修改的话,就需要改代码了,改代码就意味着要上版本,就变得更麻烦(虽然目前我还不太懂具体麻烦在哪)。

这就是 nacos 的优势所在。

然后分享一个测试结果:就是我一个系统中,有一个服务是老系统的,一个服务改造成 springboot 了。springboot 直接按前面的方式使用即可。老系统本来以为无望迁移了,后来发现里面有 spring 可以和 nacos 用,然后就分别使用两种方式搭载 nacos,spring 的是配置类加注解即可。 然后两个服务之间公共的子包则可以直接在 pom 文件中引入,然后要使用的地方直接加 nacos 注解即可,这里就不用连接注册中心了,因为启动的是服务类。

这里有一个小小的调试手段,就是在 nacos server 这里怎么看有谁连接进到哪个 dataid 了。我没发现像 mq 那样的管理界面,只发现有个
image.png
监听查询。这里输入前面的 dataid 和默认的 group 就可以查哪个连接进来了。如果没有连接进来的就为空。

nacos 的配置中心管理功能基本使用就是这样了。它还有注册中心的功能,以后有需要使用再去学习。非常感谢潘孝哥的指点。
欢迎大家交流讨论。

  • Nacos
    23 引用 • 4 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • jsDelivr

    jsDelivr 是一个开源的 CDN 服务,可为 npm 包、GitHub 仓库提供免费、快速并且可靠的全球 CDN 加速服务。

    5 引用 • 31 回帖 • 58 关注
  • QQ

    1999 年 2 月腾讯正式推出“腾讯 QQ”,在线用户由 1999 年的 2 人(马化腾和张志东)到现在已经发展到上亿用户了,在线人数超过一亿,是目前使用最广泛的聊天软件之一。

    45 引用 • 557 回帖 • 67 关注
  • Gzip

    gzip (GNU zip)是 GNU 自由软件的文件压缩程序。我们在 Linux 中经常会用到后缀为 .gz 的文件,它们就是 Gzip 格式的。现今已经成为互联网上使用非常普遍的一种数据压缩格式,或者说一种文件格式。

    9 引用 • 12 回帖 • 134 关注
  • 星云链

    星云链是一个开源公链,业内简单的将其称为区块链上的谷歌。其实它不仅仅是区块链搜索引擎,一个公链的所有功能,它基本都有,比如你可以用它来开发部署你的去中心化的 APP,你可以在上面编写智能合约,发送交易等等。3 分钟快速接入星云链 (NAS) 测试网

    3 引用 • 16 回帖
  • Jenkins

    Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。

    53 引用 • 37 回帖
  • 单点登录

    单点登录(Single Sign On)是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

    9 引用 • 25 回帖
  • Firefox

    Mozilla Firefox 中文俗称“火狐”(正式缩写为 Fx 或 fx,非正式缩写为 FF),是一个开源的网页浏览器,使用 Gecko 排版引擎,支持多种操作系统,如 Windows、OSX 及 Linux 等。

    8 引用 • 30 回帖 • 407 关注
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    2 引用 • 14 回帖
  • Openfire

    Openfire 是开源的、基于可拓展通讯和表示协议 (XMPP)、采用 Java 编程语言开发的实时协作服务器。Openfire 的效率很高,单台服务器可支持上万并发用户。

    6 引用 • 7 回帖 • 94 关注
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 51 关注
  • C++

    C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。

    107 引用 • 153 回帖
  • 创造

    你创造的作品可能会帮助到很多人,如果是开源项目的话就更赞了!

    179 引用 • 995 回帖
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 62 关注
  • OnlyOffice
    4 引用 • 3 关注
  • 设计模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

    200 引用 • 120 回帖
  • Lute

    Lute 是一款结构化的 Markdown 引擎,支持 Go 和 JavaScript。

    25 引用 • 191 回帖 • 16 关注
  • Ubuntu

    Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。

    125 引用 • 169 回帖 • 1 关注
  • Log4j

    Log4j 是 Apache 开源的一款使用广泛的 Java 日志组件。

    20 引用 • 18 回帖 • 31 关注
  • 安全

    安全永远都不是一个小问题。

    199 引用 • 816 回帖 • 1 关注
  • MongoDB

    MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是一个基于分布式文件存储的数据库,由 C++ 语言编写。旨在为应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。

    90 引用 • 59 回帖 • 1 关注
  • Solo

    Solo 是一款小而美的开源博客系统,专为程序员设计。Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    1434 引用 • 10054 回帖 • 490 关注
  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    497 引用 • 1387 回帖 • 283 关注
  • GitLab

    GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。

    46 引用 • 72 回帖
  • JRebel

    JRebel 是一款 Java 虚拟机插件,它使得 Java 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。

    26 引用 • 78 回帖 • 664 关注
  • RabbitMQ

    RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种语言客户端,如:Python、Ruby、.NET、Java、C、PHP、ActionScript 等。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

    49 引用 • 60 回帖 • 362 关注
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖 • 3 关注
  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 20 回帖 • 463 关注