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

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

学习于: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 关注

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • 开源

    Open Source, Open Mind, Open Sight, Open Future!

    411 引用 • 3588 回帖
  • HTML

    HTML5 是 HTML 下一个的主要修订版本,现在仍处于发展阶段。广义论及 HTML5 时,实际指的是包括 HTML、CSS 和 JavaScript 在内的一套技术组合。

    108 引用 • 295 回帖
  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    162 引用 • 529 回帖 • 1 关注
  • SMTP

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。

    4 引用 • 18 回帖 • 635 关注
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    133 引用 • 796 回帖
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖 • 1 关注
  • Vim

    Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。

    29 引用 • 66 回帖 • 1 关注
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    6 引用 • 142 回帖 • 1 关注
  • PostgreSQL

    PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。

    22 引用 • 22 回帖 • 1 关注
  • PWL

    组织简介

    用爱发电 (Programming With Love) 是一个以开源精神为核心的民间开源爱好者技术组织,“用爱发电”象征开源与贡献精神,加入组织,代表你将遵守组织的“个人开源爱好者”的各项条款。申请加入:用爱发电组织邀请帖
    用爱发电组织官网:https://programmingwithlove.stackoverflow.wiki/

    用爱发电组织的核心驱动力:

    • 遵守开源守则,体现开源&贡献精神:以分享为目的,拒绝非法牟利。
    • 自我保护:使用适当的 License 保护自己的原创作品。
    • 尊重他人:不以各种理由、各种漏洞进行未经允许的抄袭、散播、洩露;以礼相待,尊重所有对社区做出贡献的开发者;通过他人的分享习得知识,要留下足迹,表示感谢。
    • 热爱编程、热爱学习:加入组织,热爱编程是首当其要的。我们欢迎热爱讨论、分享、提问的朋友,也同样欢迎默默成就的朋友。
    • 倾听:正确并恳切对待、处理问题与建议,及时修复开源项目的 Bug ,及时与反馈者沟通。不抬杠、不无视、不辱骂。
    • 平视:不诋毁、轻视、嘲讽其他开发者,主动提出建议、施以帮助,以和谐为本。只要他人肯努力,你也可能会被昔日小看的人所超越,所以请保持谦虚。
    • 乐观且活跃:你的努力决定了你的高度。不要放弃,多年后回头俯瞰,才会发现自己已经成就往日所仰望的水平。积极地将项目开源,帮助他人学习、改进,自己也会获得相应的提升、成就与成就感。
    1 引用 • 487 回帖 • 3 关注
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖 • 1 关注
  • 代码片段

    代码片段分为 CSS 与 JS 两种代码,添加在 [设置 - 外观 - 代码片段] 中,这些代码会在思源笔记加载时自动执行,用于改善笔记的样式或功能。

    用户在该标签下分享代码片段时需在帖子标题前添加 [css] [js] 用于区分代码片段类型。

    162 引用 • 1079 回帖
  • Chrome

    Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。

    63 引用 • 289 回帖
  • Excel
    31 引用 • 28 回帖
  • 服务

    提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性、服务的标准化、以及对服务的监控、维护、技术支持等。

    41 引用 • 24 回帖 • 2 关注
  • PHP

    PHP(Hypertext Preprocessor)是一种开源脚本语言。语法吸收了 C 语言、 Java 和 Perl 的特点,主要适用于 Web 开发领域,据说是世界上最好的编程语言。

    180 引用 • 408 回帖 • 484 关注
  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖
  • 百度

    百度(Nasdaq:BIDU)是全球最大的中文搜索引擎、最大的中文网站。2000 年 1 月由李彦宏创立于北京中关村,致力于向人们提供“简单,可依赖”的信息获取方式。“百度”二字源于中国宋朝词人辛弃疾的《青玉案·元夕》词句“众里寻他千百度”,象征着百度对中文信息检索技术的执著追求。

    63 引用 • 785 回帖 • 93 关注
  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    150 引用 • 257 回帖 • 1 关注
  • WiFiDog

    WiFiDog 是一套开源的无线热点认证管理工具,主要功能包括:位置相关的内容递送;用户认证和授权;集中式网络监控。

    1 引用 • 7 回帖 • 609 关注
  • QQ

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

    45 引用 • 557 回帖 • 1 关注
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    495 引用 • 931 回帖
  • HHKB

    HHKB 是富士通的 Happy Hacking 系列电容键盘。电容键盘即无接点静电电容式键盘(Capacitive Keyboard)。

    5 引用 • 74 回帖 • 503 关注
  • 知乎

    知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。

    10 引用 • 66 回帖
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 436 关注
  • 以太坊

    以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统。以太坊是一个平台和一种编程语言 Solidity,使开发人员能够建立和发布下一代去中心化应用。 以太坊可以用来编程、分散、担保和交易任何事物:投票、域名、金融交易所、众筹、公司管理、合同和知识产权等等。

    34 引用 • 367 回帖 • 4 关注
  • 书籍

    宋真宗赵恒曾经说过:“书中自有黄金屋,书中自有颜如玉。”

    78 引用 • 396 回帖