使用

  • 添加引用
      <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.2.3.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2.2.3.RELEASE</version>
        </dependency>

  • 添加配置
    新建bootstrap.yml文件,添加nacos地址等
spring:
  application:
    name: user-center
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
      config:
        server-addr: 127.0.0.1:8848
        group: DEFAULT_GROUP
        file-extension: yaml
        enabled: true
        refresh-enabled: true

dataId格式

${prefix}-${spring.profiles.active}.${file-extension}

动态刷新

在使用的类上添加注解@RefreshScope

配置共享

  • 不同环境共享
  • 不同应用共享

数据持久化

nacos数据包含三部分:

  • 服务发现组件
    ~/nacos/naming

  • nacos配置数据默认使用的是一个内嵌数据库derby,如果要连接derby需要先把nacos停止。derby默认帐号密码都是nacos。配置信息在config_info表。生产环境建议替换成mysql以提高性能和高可用。

  • 快照等
    ~/nacos/config

生产环境nacos集群搭建

参考文档:nacos官方文档

  1. 安装mysql,建议5.6.5+版本

  2. 导入初始化脚本
    找到 conf/nacos-mysql.sql ,将其导入到数据库中。

  3. 配置数据库连接
    找到 conf/application.properties ,添加如下内容:

# 表明用MySQL作为后端存储
spring.datasource.platform=mysql

# 有几个数据库实例
db.num=2

# 第1个实例的地址
db.url.0=jdbc:mysql://11.162.196.16:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
# 第2个实例的地址
db.url.1=jdbc:mysql://11.163.152.9:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=nacos_devtest
db.password=nacos

  1. 对于MySQL 8.0
    Nacos 1.0.1内置的connector是 mysql-connector-java-5.1.34 ,该connector无法连MySQL 8.0。还好Nacos提供了插件机制,可以支持MySQL 8.0+。方法如下:
  • 在上面操作的基础上,下载支持MySQL 8.0的connector,例如:mysql-connector-java-8.0.16 。mysql-connector-java-8
  • 在Nacos的 plugins 目录下创建 mysql 目录,并将下载的connector扔到该目录即可。
  1. 准备多个安装包,比如端口号规划为 8848 8849 8850。复制3份nacos安装包,将conf/application.properties中的 server.port=8848,分别改为:server.port=8848 server.port=8849 server.port=8850

  2. 找到 conf/cluster.conf.example ,将其改名为 conf/cluster.conf ,并将内容改为类似如下,即:以ip:端口 的形式列出Nacos集群中所有实例的地址:

# ip:port
127.0.0.1:8848
127.0.0.1:8849
127.0.0.1:8850
  1. 启动所有nacos
sh startup.sh
  1. 配置代理服务器 nginx
upstream nacos {
  server 127.0.0.1:8848;
  server 127.0.0.1:8849;
  server 127.0.0.1:8850;
}

server {
  listen 80;
  server_name  localhost;
  location /nacos/ {
    proxy_pass http://nacos/nacos/;
  }
}

  1. 实际生产环境建议配置一个域名,这样即使未来Nacos Server需要迁移,也无需修改Nacos Client端的配置。并且为了安全起见,修改nacos密码,服务器限制访问ip。

总结

  • 能放本地,不放远程。本地配置对于开发人员更友好。
  • 尽量规避优先级,减少复杂度。
  • 定好规范,尽量加注释
  • 配置管理人员尽量少