nacos1.2.0作为配置中心初探

文章目录

  • 痛点分析
  • 为什么要用Naocs配置中心?
  • Nacos1.2.0术语简介
    • Nacos1.2.0 maven 依赖
    • Nacos1.2.0配置解读
    • Nacos1.2.0注解解读
    • Nacos1.2.0租户权限分配(目前1.2.0没有全面支持,jar包没升级,可以先忽略)
  • 实战
  • 结束语

痛点分析

  • 我们没有配置中心,项目越来越多,配置管理起来比较麻烦;更改一个配置参数,a首先要登录服务所在的服务器,b然后更新配置,c然后重启服务,d然后验证,f然后把本次修改的配置文件,再更新部署文档力做一个更新。如果验证出现问题,从上面的执行步骤再走一遍;整体流程简单概括有下面几个问题:
    A 配置更改需要重启
    B配置更改无法回溯,没有记录 ,不支持回滚。谁改了?什么时候改的?改了什么?一无所知。
    C更改一个配置步骤繁琐,个人觉得,例如菏泽或者科信委给他们更新一个配置;先向日葵,后跳板机,再服务器间跳转登录好麻烦。
  • springcloud是我们组目前使用微服务技术架构。springcloud提供的原生组件SpringCloudConfig,无界面管理,且需要git,SpringCloudBus、Mq支持其动态更新,好麻烦;

为什么要用Naocs配置中心?

传统静态配置的缺陷:
配置散乱格式不标准;配置一般采用本地静态配置,修改麻烦;环境越多越容易引发事故;配置修改无法追溯;配置缺乏动态刷新机制;要重启服务,配置才能更新;

  • 减少和避免上述发生的问题
  • Nacos友好的控制台界面
  • 无缝支持 Spring Cloud,为 Spring Cloud 用户其提供更简便的配置中心
  • Nacos支持目前几乎所有主流的微服务生态体系
  • 支持动态的配置管理,将服务的配置信息分环境分类别外部管理,并且支持热更新
  • Nacos的配置信息存储与数据库中,支持配置信息的监听和版本回滚
  • 社区活跃,不断在迭代。Nacos目标明确,Nacos 致力于发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。Nacos有望成为未来的微服务架构。

Nacos1.2.0术语简介

nacos1.2.0作为配置中心初探_第1张图片

  • Namespace命名空间;不同租户的配置在命名空间下相互隔离;
  • Group同一个租户下的配置还可以通过组的配置做一层隔离
  • DataID 一个配置的唯一标识,微服务自动与之匹配,匹配规则
${prefix}-${spring.profile.active}.${file-extension}

Nacos1.2.0 maven 依赖

版本要求

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>${latest.version}</version>
</dependency>

Nacos1.2.0配置解读

bootstrap.properties
# 例如这个配置出来的服务名称配置对应
# dss命名空间下的DEFAULT_GROUP分组下的dss-dev.properties
# 指定开发环境
spring.profiles.active=dev
# 服务名称
spring.application.name=dss
# nacos服务器地址
spring.cloud.nacos.config.server-addr=${NACOS_SERVER:127.0.0.1:8848}
# 默认是Public
spring.cloud.nacos.config.namespace=${NACOS_NAMESPACE:dss}
# 文件名 -- 如果没有配置则默认为 ${spring.appliction.name}
spring.cloud.nacos.config.prefix=${spring.appliction.name}
# 指定文件后缀
spring.cloud.nacos.config.file-extension=${NACOS_EXTENSION:properties}
# 分组
spring.cloud.nacos.config.group=${NACOS_GROUP:DEFAULT_GROUP}

Nacos1.2.0注解解读

@RefreshScope 配置文件自动刷新

Nacos1.2.0租户权限分配(目前1.2.0没有全面支持,jar包没升级,可以先忽略)

  • 使用管理员账号登录Nacos控制台
    默认超级账号:nacos/nacos
    nacos1.2.0作为配置中心初探_第2张图片
  • 管理用户
    nacos1.2.0作为配置中心初探_第3张图片
    nacos1.2.0作为配置中心初探_第4张图片
    nacos1.2.0作为配置中心初探_第5张图片
  • 管理角色
    nacos1.2.0作为配置中心初探_第6张图片
    nacos1.2.0作为配置中心初探_第7张图片
  • 管理权限
    nacos1.2.0作为配置中心初探_第8张图片
  • 工程初始化时Application加上这段代码
Properties properties = new Properties();
properties.put(PropertyKeyConst.NAMESPACE, "你的命名空间");
properties.put(PropertyKeyConst.SERVER_ADDR, "配置中心地址");
// 配置用户名:
properties.put(PropertyKeyConst.USERNAME, "用户名");
// 配置密码:
properties.put(PropertyKeyConst.PASSWORD, "密码");
ConfigService iconfig = NacosFactory.createConfigService(properties);

在这里插入图片描述
nacos1.2.0作为配置中心初探_第9张图片

备注:给租户分配命名空间的权限。 Public命名空间也要分配一下。用于共享。不配置的话,切换到dss租户下会报错

nacos1.2.0作为配置中心初探_第10张图片

实战

  • 第一步引入依赖
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>2.1.1.RELEASE</version>
</dependency>

nacos1.2.0作为配置中心初探_第11张图片

备注:springboot的版本和springcloud的版本和我这个保持一致否则可能出现其它问题.
springboot和nacos配置中心用2.1.1.RELASE版本 Springcloud 用Greenwich.SR3

  • 第二步:加点配置 bootstrap.properties
    nacos1.2.0作为配置中心初探_第12张图片

与其对应的配置dss.yml

# dataId ${prefix}-${spring.profile.active}.${file-extension}
#指定开发环境
#spring.profiles.active=dev
#服务名称
#spring.application.name=dss
# nacos服务器地址
spring.cloud.nacos.config.server-addr=10.0.54.106:8848
# 默认是Public
#spring.cloud.nacos.config.namespace=dss
#文件名 -- 如果没有配置则默认为 ${spring.appliction.name}
#spring.cloud.nacos.config.prefix=dss
#指定文件后缀
spring.cloud.nacos.config.file-extension=yml
#分组
spring.cloud.nacos.config.group=DEV
  • 第三步:Nacos配置中心也点东西
    nacos1.2.0作为配置中心初探_第13张图片
  • 第四步:项目跑起来
    在这里插入图片描述
    nacos1.2.0作为配置中心初探_第14张图片

备注:@RefreshScope定时刷新

  • 第五步 验证
    nacos1.2.0作为配置中心初探_第15张图片
    nacos1.2.0作为配置中心初探_第16张图片
    nacos1.2.0作为配置中心初探_第17张图片

已经能做到到不停机拿配置了。
备注:nacos的dataId和bootstrap.properties是怎么一一对应的,详细见Nacos1.2.0术语简介的第三点。
nacos的写的配置优先级是最高的,比jar外置的application.properties还要高,完全可以把nacos和微服务的启动结合起来。

结束语

nacos在基本包含了微服务的所有模块,本文着重介绍了nacos做为配置中心的简单使用;
目前官网推荐使用的版本是1.1.4,我部署的官网最新nacos1.2.0。在使用nacos1.2.0使用过程中我发现官网jar包还没有更新,现在是2020年3月17日,估计过一个月这个1.2.0就会全面支持,我把nacos权限配置开关了,当前版本功能就和1.1.4保持一致了。上面多租户的权限隔离,后面会出来,现在我们的项目如果使用,只能通过命名空间,分组来做隔离。
对于有背景介绍没有配置中心的,或者想有一个更好用配置中心的,Nacos是一个不错的选择。

你可能感兴趣的:(nacos)