Back
Featured image of post Nacos配置中心入门

Nacos配置中心入门

建立数据库

建立个用于存放配置的数据库名为nacos-config,nacos/conf下有一个nacos-mysql.sql,运行一下便可获得存放配置信息的表

配置数据源

修改nacos/conf/application.properties

### If use MySQL as datasource:
spring.datasource.platform=mysql

### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://xxxxxxx:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=xxxxxxx

记得重启

应用接入配置中心

依赖

<!-- Spring Boot Web模块 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Nacos注册中心starter -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- Nacos配置中心starter -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

配置文件,我们把原来的application.yml删除了,我们不再需要本地配置

然后创建文件bootstrap.yml,注意名字要一模一样

spring:
  application:
    name: order-service #微服务id
  profiles:
    active: dev #环境名
  cloud:
    nacos:
      config: #Nacos配置中心配置
        file-extension: yml #文件扩展名
        server-addr: 192.168.31.10:8848
        username: nacos
        password: nacos
logging: #开启debug日志,仅为学习时使用
  level:
    root: debug

定义一份配置文件是用微服务id-环境名.文件扩展名 三部分组合为有效的 data id,比如上面的就是order-service-dev.yml

然后去Nacos把原来的那些应用配置给存到云端

点击➕ 号新建配置

注意data id 就是上面说的微服务id-环境名.文件扩展名 ,然后选择yaml格式,把我们以前写在本地的配置文件写到下面的配置内容中

此时新建的配置信息其实就是用我们之前配置的MySQL存的,你会发现这些配置信息存在config-info表中了

配置热加载技术

当我们突然修改配置文件后,为了生效我们必须重启一下应用,就有点麻烦,为了解决这个问题,我们用到了配置热加载技术

为了支持热加载,服务的程序针对热加载需要作出如下变动:

第一,配置数据必须被封装到单独的配置 Bean 中;

第二,这个配置 Bean 需要被 @Configuration@RefreshScope 两个注解描述。

@Configuration
@RefreshScope
public class CustomConfig {
    @Value("${custom.flag}")
    private String flag;
    @Value("${custom.database}")
    private String database;
    public String getFlag() {
        return flag;
    }
    public void setFlag(String flag) {
        this.flag = flag;
    }
    public String getDatabase() {
        return database;
    }
    public void setDatabase(String database) {
        this.database = database;
    }
}

在配置处用@Resource 注入即可

@RestController
public class TestController {
    @Resource
    private CustomConfig customConfig;
    @GetMapping("/test")
    public String test(){
        return "flag:" + customConfig.getFlag() + "<br/> database:" + customConfig.getDatabase();
    }
}

现在我们需要变更配置文件时只需在Nacos中修改配置,它就会自动推送到应用而不需要每次都重启应用了。

分环境配置

这个其实和原来没有用配置中心的差不多,生产环境的配置就在文件名后加-prod ,配置环境就加-dev ,共用的基础全局配置就直接application.yml 什么也不用加。

对于现在微服务架构具体来说就是

  • order-service-dev.yml 开发环境
  • order-service-prod.yml 生产环境
  • order-service.yml 共用

当然,如果要改变你要用的环境,还是需要改bootstrap.yml

spring:
  profiles:
    active: prod #环境名
comments powered by Disqus
一辈子热爱技术
Built with Hugo
Theme Stack designed by Jimmy
gopher