zoukankan      html  css  js  c++  java
  • 配置中心 ------- Nacos

    一、配置中心

    nacos有两大功能:注册中心和配置中心

    nacos的中文文档:https://nacos.io/zh-cn/docs/open-api.html

    1、配置文件的缺点

    (1)生产环境的数据库的用户名和密码都配置在配置文件中,所有开发人员都能看到密码,这就造成了一定的安全隐患;

    (2)配置文件修改之后服务必须重启才可以生效,若生产环境上有一个开关需要打开,修改完配置文件再重启服务,那风险太大了;

    2、配置中心的特点

    (1)实现不同环境不同配置的统一管理;

    (2)配置属性修改后自动刷新;

    二、配置中心的使用

    1、配置中心

    步骤1:增加maven依赖

     <!-- 配置中心 -->
    <dependency>
         <groupId>com.alibaba.cloud</groupId>
         <artifactId>spring-cloud-alibaba-nacos-config</artifactId>
    </dependency>
    

    步骤2:增加一个名为 bootstrap.yml 配置文件 

    bootstrap.yml 文件优先于 application.yml 文件加载;

    bootstrap.yml 文件的内容,如下:

    spring:
      cloud:
        nacos:
          config:
            server-addr: 192.168.172.20:8848
            file-extension: yml
      application:
        name: order-center
      profiles:
        active: dev

    (1)配置文件的说明:

    spring.cloud.nacos.config.server-addr=192.168.1.1:8848,表示微服务从哪个配置中心上拉取配置;

    spring.cloud.nacos.config.file-extension=yml,表示文件的扩展名;

    spring.application.name=order-center,表示当前服务向配置中心索要 order-center 的配置;

    spring.profiles.active=dev,表示像配置中心索要哪个环境的配置;

    索要文件的格式为:

    {spring.application.name}-{spring.profiles.active}.{spring.cloud.nacos.config.file-extension}

    (2)以上配置,向配置中心拉取的配置的 dataId 的名称为: order-center-dev.yml

    步骤3:在 nacos 的配置列表中增加一个 Data ID 名为 order-center-dev.yml 的配置

     步骤4:在Controller类上增加 @RefreshScope 注解,使配置进行动态刷新

    @RestController
    @Slf4j
    @RefreshScope
    public class OrderController {
    
    	@Value("${env.name}")
    	private String envName;
    
        @Autowired
        private ProductCenterFeignApi productCenterFeignApi;
    
        @GetMapping("/v1/getProduct/{id}")
        public String getProduct(@PathVariable("id") String id) {
    		log.info("------- envName: {} -------", envName);
            Person person = productCenterFeignApi.getPerson(id);
            return person.toString();
        }
    }

    2、通用配置

    (1)同一个服务的通用配置

    通常我们的开发在开发环境、测试环境、生产环境都有很多相同的配置,使用注册中心怎么配置呢?

    在配置中心新增一个不带 profiles 的配置,格式如下:

    {spring.application.name}.{spring.cloud.nacos.config.file-extension}

    那针对以上的配置,Data ID 的名称命名为:order-center.yml

    启动 order-center 服务之后,打印日志如下:

     我们创建的 order-center.yml 配置就是通用配置,不管启动 dev,还是prod,都会加载该配置中的内容。

    配置的优先级:精准配置 会覆盖 与通用配置 相同的配置,然后再和通用配置互补。

    (2)不同服务的通用配置

    我们两个服务 order-center 和 product-center 都会注册到同一个注册中心上,那么他们的注册中心配置就是一样的,我们可以给不同服务设置通用配置。

    步骤1:配置文件中增加 shared-dataids refreshable-dataids 配置

    spring:
      cloud:
        nacos:
          config:
            server-addr: 192.168.172.20:8848
            file-extension: yml
            shared-dataids: common.yml, common2.yml
            refreshable-dataids: common.yml, common2.yml
    

    同一个配置项先加载后面的,可以在服务启动类中查看。

    b.c.PropertySourceBootstrapConfiguration : Located property source:
    CompositePropertySource {name='NACOS',
    propertySources=[
    NacosPropertySource {name='order-center-dev.yml'},
    NacosPropertySource {name='order-center.yml'},
    NacosPropertySource {name='common2.yml'},
    NacosPropertySource {name='common.yml'}

    说明:order-center-dev.yml 精准匹配;order-center.yml 同工程不同环境的通用配置;shared-dataids 不同工程通用配置;

    步骤2:在nacos的配置列表中新增配置,common.yml 和 common2.yml

    3、配置回滚

    在nacos的配置列表中有一个”历史版本“,可以回滚配置

    4、nacos的密码修改或添加新的用户

    (1)maven增加如下依赖:

    <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-security</artifactId>
    </dependency>
    

    (2)java代码对密码进行加密:

    public static void main(String[] args) {
            String password = new BCryptPasswordEncoder().encode("password");
            System.out.println(password);
    }

     5、连接 Nacos 内置的 apache Derby 数据库

     


  • 相关阅读:
    分布式一致性模型
    ubuntu18.04 基于Hadoop3.1.2集群的Hbase2.0.6集群搭建
    ubuntu18.04 flink-1.9.0 Standalone集群搭建
    Idea 打印GC
    goroutine简介
    MESI缓存一致性协议
    Spark RDD 算子总结
    SparkStreaming 笔记
    Spark 内存管理
    Highcharts(数据分析图)
  • 原文地址:https://www.cnblogs.com/yufeng218/p/14071671.html
Copyright © 2011-2022 走看看