vlambda博客
学习文章列表

nacos--阿里开源配置中心

什么是nacos?


Nacos 支持基于 DNS 和基于 RPC 的服务发现(可以作为springcloud的注册中心)、动态配置服务(可以做配置中心)、动态 DNS 服务。

官方介绍是这样的:

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您实现动态服务发现、服务配置管理、服务及流量管理。 

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos 是构建以“服务”为中心的现代应用架构(例如微服务范式、云原生范式)的服务基础设施。


一.部署安装

(一)常用安装方式

1.  

git clone https://github.com/alibaba/nacos.git cd nacos/mvn -Prelease-nacos clean install -U ls -al distribution/target/// change the $version to your actual path cd distribution/target/nacos-server-$version/nacos/binunzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz cd nacos/binsh startup.sh -m standalone

2.

git clone https://github.com/nacos-group/nacos-docker.git cd nacos-dockerdocker-compose -f example/standalone.yaml up

(二)安装参考文档

https://nacos.io/zh-cn/docs/quick-start.html

二.使用规范

1.http://192.168.4.xxx:8848/nacos/ nacos/nacos


 (二)使用操作

         Dubbo Nacos控制台主要旨在于增强对于服务列表,健康状态管理,服务治理,分布式配置管理等方面的管控能力,以便进一步帮助用户降低管理微服务应用架构的成本,将提供包括下列基本功能:

服务管理

  • 服务列表及服务健康状态展示

  • 服务元数据存储及编辑

  • 服务流量权重的调整

  • 服务优雅上下线

配置管理

  • 多种配置格式编辑

  • 编辑DIFF

  • 示例代码

  • 推送状态查询

  • 配置版本及一键回滚

命名空间

登录管理


特性详解

1.服务管理

开发者或者运维人员往往需要在服务注册后,通过友好的界面来查看服务的注册情况,包括当前系统注册的所有服务和每个服务的详情。并在有权限控制的情况下,进行服务的一些配置的编辑操作.Nacos在这个版本开放的控制台的服务发现部分,主要就是提供用户一个基本的运维页面,能够查看,编辑当前注册的服务。

服务列表管理

服务列表帮助用户以统一的视图管理其所有的微服务以及服务健康状态。整体界面布局是左上角有服务的搜索框和搜索按钮,页面中央是服务列表的展示。服务列表主要展示服务名,集群数目,实例数目,健康实例数目和详情按钮五个栏目。


nacos--阿里开源配置中心

在服务列表页面点击详情,可以看到服务的详情。可以查看服务,集群和实例的基本信息。

服务流量权重支持及流量保护

Nacos为用户提供了流量权重控制的能力,同时开放了服务流量的阈值保护,以帮助用户更好的保护服务服务提供者集群不被意外打破。如下图所以,可以点击实例的编辑按钮,修改实例的权重。如果想增加实例的流量,可以将权重调大,如果不想实例接收流量,则可以将权重设为0。

nacos--阿里开源配置中心

服务元数据管理

NACOS提供多个维度的服务元数据的暴露,帮助用户存储自定义的信息。这些信息都是以KV的数据结构存储,在控制台上,会以K1 = V1,K2 = V2这样的格式展示。类似的,编辑元数据可以通过相同的格式进行例如服务的元数据编辑,首先点击服务详情页右上角的“编辑服务”按钮,然后在元数据输入框输入:版本= 1.0,ENV = PROD。

nacos--阿里开源配置中心

点击确认,就可以在服务详情页面,看到服务的元数据已经更新了。

nacos--阿里开源配置中心

服务优雅上下线

NACOS还提供服务实例的上下线操作,在服务详情页面,可以点击实例的“上线”或者“下线”按钮,被下线的实例,将不会包含在健康的实例列表里。


2.配置管理

NACOS支持基于命名空间和组的配置分组管理,以便用户更灵活的根据自己的需要按照环境或者应用,模块等分组管理微服务以及春节的大量配置,在配置管理中主要提供了配置历史版本,回滚,订阅者查询等核心管理能力。

nacos--阿里开源配置中心

多配置格式编辑器

Nacos支持YAML,属性,TEXT,JSON,XML,HTML等常见配置格式在线编辑,语法高亮,格式校验,帮助用户高效编辑的同时大幅降低格式错误带来的风险。

NACOS支持配置标签的能力,帮助用户更好,更灵活的做到基于标签的配置分类及管理。同时支持用户对配置及其变更进行描述,方面多人或者跨团队协作管理配置。

nacos--阿里开源配置中心

编辑DIFF

NACOS支持编辑DIFF能力,帮助用户校验修改内容,降低改错带来的风险

nacos--阿里开源配置中心

示例代码

NACOS提供示例代码能力,能够让新手快速使用客户端编程消费该配置,大幅降低新手使用门槛。


nacos--阿里开源配置中心

监听者查询

Nacos提供配置订阅者即监听者查询能力,同时提供客户端当前配置的MD5校验值,以便帮助用户更好的检查配置变更是否推送到Client端。

配置的版本及一键回滚

NACOS通过提供配置版本管理及其一键回滚能力,帮助用户改错配置的时候能够快速恢复,降低微服务系统在配置管理上的一定会遇到的可用性风险。


3.命名空间管理

Nacos基于命名空间帮助用户逻辑隔离多个命名空间,这可以帮助用户更好的管理测试,预发,生产等多环境服务和配置,让每个环境的同一个配置(如数据库数据源)可以定义不同的值。

nacos--阿里开源配置中心

nacos--阿里开源配置中心

4.登录管理

Nacos0.8版本支持简单登录功能,默认用户名/密码为nacos / nacos。

5.常规参数使用

dataId (应用唯一标示idnamespace( 命名空间 id  md5)dev sit  uat   prdserver-addr (配置Nacos服务器地址)groupId (保留字段,暂不启用)归属应用 (保留字段,暂不启用)

spring boot 配置(目前测试)
@SpringBootApplication@NacosPropertySource(dataId = "example", autoRefreshed = true)public class NacosConfigApplication {public static void main(String[] args) {SpringApplication.run(NacosConfigApplication.class, args);
} }
nacos:config:server-addr: 192.168.4.237:8848groupId: config (保留字段暂不启用)  namespace: e7ea9bb4-cf84-472f-8aa4-a6d373e27301

spring  cloud 配置(尝试在测试注册中心)#服务器地址spring.cloud.nacos.config.server-addr=127.0.01:8848#namespace 注意这里是nacos生成的字符串而不是devspring.cloud.nacos.config.namespace=527026c2-5e3b-4732-a5ac-e40173bf9397
#第一组配置(common配置是公共属性 数据库、redis、mq等,dev全局一套)spring.cloud.nacos.config.ext-config[0].data-id=common.yamlspring.cloud.nacos.config.ext-config[0].group=common-config#业务模块配置(独立配置属性)spring.cloud.nacos.config.ext-config[1].data-id=member.yamlspring.cloud.nacos.config.ext-config[1].group=member-config#动态刷新spring.cloud.nacos.config.ext-config[1].refresh=true

项目部署

spring boot
原本启动参数:-Dspring.profiles.active=dev
需要替换参数为:-Dnacos.config.namespace=e7ea9bb4-cf84-472f-8aa4-a6d373e27301

spring cloud
原本启动参数:-Dspring.profiles.active=dev
需要替换参数为:-Dspring.cloud.nacos.config.namespace=e7ea9bb4-cf84-472f-8aa4-a6d373e27301

 (三)使用操作注意项

1.NACOS如何支持多环境

在日常使用中常常需要不同的环境,比如日常,预发,线上环境,如果是逻辑隔离可以使用命名空间,NACOS支持命名空间来支持多环境隔离,可以在NACOS控制台创建多个命名空间。如果需要物理隔离需要部署多套NACOS环境

nacos--阿里开源配置中心


2.生产环境建议搭建NACOS集群

3.规划上线流程,物理隔离线上线下环境,建议配置重启生效。

精选原创推荐