Spring Cloud配置中心

微服务意味着要将单体应用中的业务拆分成一个个子服务 , 每个服务的粒度相对较小 ,因此系统中会出现大量的服务。
由于每个服务都需要必要的配置信息才能运行 , 所以一套集中式的 , 动态的配置管理设施是必不可少的。
Spring Cloud 提供了 ConfigServer 来解决这个问题 .
Spring Cloud Config 为微服务架构中的微服务提供集中化的外部配置支持 ,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置。
SpringCloud Config 分为服务端和客户端两部分。

Spring Cloud配置中心_第1张图片

服务端也称为分布式配置中心 , 他是一个独立的微服务应用 ,用来连接配置服务器并为客户端提供获取配置信息 , 加密 / 解密信息等访问接口。
客户端则是通过制定的配置中心来管理应用资源 , 以及与业务相关的配置内容 ,并在启动的时候从配置中心获取和加载配置信息配置服务器默认采用 git 来存储配置信息 , 这样就有助于对环境配置进行版本管理 ,并且可以通过 git 客户端工具来方便的管理和访问配置内容。
  Spring Cloud配置中心_第2张图片

一个使用微服务架构的应用系统可能会包括成百上千个微服务,配置各部相同,需求各不相同: 

不同环境不同配置:例如数据源在不同的环境(开发 , 测试 , 生产)是不同的 , 可以通过配置中心
运行期间可以动态调整。例如根据各个微服务的负载状况 , 动态调整数据源连接池大小或者熔断阀
, 并且调整时不停止微服务(配置修改后可以自动更新)

 

导入nacos-config依赖


  com.alibaba.cloud
  spring-cloud-starter-alibaba-nacos-config
Spring Cloud Alibaba Nacos Config Nacos 提供用于存储配置和其他元数据的 key/value 存储 ,为分布式系统中的外部化配置提供服务器端和客户端支持。
使用 Spring Cloud Alibaba Nacos Config, 您可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置。
Spring Cloud Alibaba Nacos Config Config Server Client 的替代方案 ,客户端和服务器上的概念与Spring Environment 和 PropertySource有着一致的抽象
在特殊的 bootstrap 阶段 , 配置被加载到 Spring 环境中。当应用程序通过部署管道从开发到测试再到生产时 , 您可以管理这些环境之间的配置 , 并确保应用程序具有迁移时需要运行的所有内容。

bootstrap.yml 

SpringBoot默认支持propertiesYAML两种格式的配置文件。

bootstrap.yml bootstrap.properties )用来程序引导时执行 , 应用于更加早期配置信息读取 ,如可以使用来配置 application.yml 中使用到参数等
application.yml application.properties) 应用程序特有配置信息 ,可以用来配置后续各个模块中需使用的公共参数等。
bootstrap.yml 先于 application.yml 加载

 导入依赖


    org.springframework.cloud
    spring-cloud-starter-bootstrap
server:
  port: 8083
spring:
  application:
    name: provider
  cloud:
    nacos:
      server-addr: localhost:8848
      config:
        server-addr: ${spring.cloud.nacos.server-addr}
        prefix: ${spring.application.name}
        file-extension: yaml
        group: DEFAULT_GROUP
        shared-configs:
          - data-id: redis.yaml
            group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
            refresh: true # 是否自动刷新配置,默认为 false
@RefreshScope 实现配置实时更新
@SpringBootApplication
@EnableDiscoveryClient
@RefreshScope
public class ProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(ProviderApplication.class, args);
    }

}

也可通过cmd命令运行

java - jar xx.jar
java - jar xx.jar -- spring.cloud.nacos.config.namespace=xxx

你可能感兴趣的:(spring,cloud,java,spring)