nacos同时作为配置中心和注册中心

一. 背景

 在微服务架构中,每个服务都有自己的配置,配置数据库、redis的参数配置、服务器的地址等。通常情况下,在项目中配置了application-dev.yml、application-prod.yml、application-test.yml等多套环境配置,和应用打包在一起,启动服务时,选择不同的环境配置。如果需要修改配置信息,则需要重新进行打包,重启服务器。如是集群部署,还要考虑集群管理配置,代码安全、审核机制等因素,效率低。因此,动态配置就应运而生了。

二. 技术选型

 微服务配置中心的技术选型一般有以下几个:Apollo、Disconf、Spring Cloud Config、Nacos等。

Apollo: 携程开源的配置管理中心,具备规范的流程治理、权限等特性。

Disconf:百度开源的配置管理中心,目前已经不维护了。

Spring Cloud Config:Spring Cloud 生态组件,结合git,可以和Spring Cloud体系无缝整合。

Nacos: 阿里开源的配置中心,也可以做DNS和RPC的服务发现。

由于Nacos比Apollo、Spring Cloud Config使用简单,而且还可以支持DNS和RPC的服务发现,博主选择了Nacos作为配置中心。

三. nacos配置中心的实现

 本文的内容概要如下图1所示,将从四个方面带您了解nacos的使用。本文的demo代码已经上传github,小伙伴可以从自行下载。

丢了


图1 内容大纲
 

3.1 依赖库

由于需要把微服务注册到nacos并且读取配置中心配置,所以要依赖2个库。

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


3.2 项目配置

1)application开启:@EnableDiscoveryClient,把微服务注册到nacos。

@SpringBootApplication
@EnableDiscoveryClient
public class NacosConfigApplication {
    public static void main(String[] args) {
        SpringApplication.run(NacosConfigApplication.class, args);
    }
}
2)将application.properties改为bootstrap.yml,添加nacos注册、读取配置中心、服务地址、端口等配置信息。

server:
  port: 8852
spring:
  application:
    name: consumer # 注册到nacos的名字
  cloud:
    nacos:
      config: # nacos 配置中心
        server-addr: localhost:8848
        file-extension: yaml # 配置文件格式是yml
        prefix: consumer # 配置文件前缀
        group: DEFAULT_GROUP # group是默认的话,可以不写
        # dataID不用配置:,只需要在nacos后台将dataId命名为:${prefix}-${spring.profiles.active}.${file-extension}
        #;例如:consumer-dev.yaml
        namespace: 8b575b9d-7d89-46df-b255-20f14b625a59 #自己创建的命名空间
      discovery: # 注册到nacos
        server-addr: localhost:8848
        namespace: 8b575b9d-7d89-46df-b255-20f14b625a59
  profiles:
    active: dev #

 

3.3 nacos后台配置

本小节内容是本文的重点内容。 

  1. 在nacos的图形化界面创建命名空间

    上图中,8b575b9d-7d89-46df-b255-20f14b625a59对应bootstrap中的namespace,consumer-dev.yml 对应${prefix}-${spring.profiles.active}.${file-extension}拼接之后相等

  2. 现在可以把bootstrap中的配置移植到consumer-dev.yml中

    同时本地bootstrap中只需连接到nacos的配置中心即可

    
    spring:
      cloud:
        nacos:
          config: # nacos 配置中心
            server-addr: localhost:8848
            file-extension: yml # 配置文件格式是yml
            prefix: consumer # 配置文件前缀
            group: DEFAULT_GROUP # group是默认的话,可以不写
            # dataID不用配置:,只需要在nacos后台将dataId命名为: ${prefix}-${spring.profile.active}.${file-extension}
            #;例如:consumer-dev.yaml
            namespace: 8b575b9d-7d89-46df-b255-20f14b625a59
      profiles:
        active: dev

     

  3. 开启自动刷新配置

@RefreshScope // 开启配置自动刷新
public class ConfigController {
}

目录

一. 背景

二. 技术选型

三. nacos配置中心的实现

3.1 依赖库

3.2 项目配置

3.3 nacos后台配置


 

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值