简介说明

平台部署的工程有十几个,本地配置文件就得维护十几份;其中有公共的配置,改起来头疼而且无法进行版本管理;这时候就需要一个统一的配置中心进行管理,目前常用的开源服务有:[[Nacos 注册中心]] & [[Apollo 入门]]

服务对比 Apollo Nacos
开源时间 2016.5 2018.6
配置实时推送 支持:HTTP 长轮询 1s 内 支持:HTTP 长轮询 1s 内
版本管理 自动管理 自动管理
配置回滚 支持 支持
灰度发布 支持 待支持
权限管理 支持 待支持
多环境 支持 支持
监听查询 支持 支持
多语言支持 Go、C++、Python、Java、.Net、OpenAPI Python、Java、NodeJs、OpenAPI
高可用最小集群数 Config*2 & Admin*3 & Portal*2 & MySQL=8 Nacos*3 & MySQL=4
通信协议 HTTP HTTP
数据一致性 数据库模拟消息队列,Apollo 定时读消息 HTTP 异步通知
单机读:TPS 9000 15000
单机写:TPS 1100 1800
三节点读 27000 45000
三节点写 3300 5600

从上述表格不难看出 Nacos & Apollo 功能上几乎没什么差异,但性价比上 Nacos 远优于 Apollo,刚好注册中心用的就是 Nacos

  • 基于 dataId 为 yaml 的文件扩展名配置方式
  • 支持配置的动态更新
  • 支持 profile 粒度
  • 支持自定义 namespace

    开始使用

    ::: tip 改造起来其实很简单
  • 先安装启动 Nacos 服务:Nacos 安装部署 & 项目实践
  • 然后根据不同的环境创建不同的工作空间(也支持配置组、profile 等)
  • 创建公共配置文件,如数据库等中间件的连接信息:common.properties
  • 再将原来的配置整理修改好,重名为工程名导入到 Nacos 配置列表中
  • 启动集成好的后端服务
    :::

    集成服务

    添加依赖

    1
    2
    3
    4
    <dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>

    服务地址

    需要先在工程配置文件添加服务地址:bootstrap.properties
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17

    spring.application.name=nacos-config
    #死否启用服务,默认开启,false 关闭
    spring.cloud.nacos.config.enabled = true
    spring.cloud.nacos.config.server-addr = 127.0.0.1:8848
    spring.cloud.nacos.config.username = nacos
    spring.cloud.nacos.config.password = nacos
    #命名空间 ID,默认 public
    spring.cloud.nacos.config.namespace = public
    #配置文件默认扩展名,默认 properties,可以修改为 yaml
    spring.cloud.nacos.config.file-extension = yaml
    spring.cloud.nacos.config.refresh.enabled = true
    #配置文件组,默认 DEFAULT_GROUP
    spring.cloud.nacos.config.group = junyu
    #多(公共)配置加载
    spring.cloud.nacos.config.extension-configs[0].data-id=common.properties
    spring.cloud.nacos.config.extension-configs[0].group=junyu
    ::: note 特别说明:使用域名的方式来访问 Nacos 时,80、443 等常用端口也不能省略
    如 Nacos 的域名为 nacos.yuwei.cc,端口为 80,server-addr 应该配置为:nacos.yuwei.cc:80
    :::

    创建配置

    浏览器访问 ip:8848/nacos,配置管理 -> 配置列表 -> 导入配置(或者重新创建)

    更多使用见官方文档:Nacos-config

    配置管理

    发布

    通过新建或者在原有配置进行编辑,点击发布,开启 spring.cloud.nacos.config.refresh.enabled = true的话不需要重启后端服务

    回滚

    从配置管理 -> 历史版本中找到要回滚的配置,点击右边的回滚按钮,一键进行回滚