美文网首页
SpringCloud---Config(配置中心)

SpringCloud---Config(配置中心)

作者: RalapHao | 来源:发表于2017-11-07 17:45 被阅读0次

    介绍

    分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程仓库中。在spring cloud config 组件中,分两个角色,一是config server,二是config client。

    服务端(config server)

    1. 创建远程配置
      我选用的是码云,创建三个工程,相当于三个服务配置


      project.png
    2. 添加依赖
      <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-config-server</artifactId>
      </dependency>
      <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-security</artifactId>
      </dependency>
      
    3. 添加注解
      @SpringBootApplication
      @EnableConfigServer
      public class ConfigServerApplication {
          public static void main(String[] args) {
              SpringApplication.run(ConfigServerApplication.class, args);
          }
      }
      
    4. yml 配置
      security:
        basic:
          enabled: true
        user:
          name: ralap
          password: hjx969190
      server:
        port: 8060
      spring:
        cloud:
          config:
            server:
              git:
                uri: https://gitee.com/itFanRalap/{application}
      #目录配置
      #          search-paths:
      #            - foo #目录结构(子目录foo)    http://localhost:8060/master/foo-dev.yml
      #            - bar
      
      
      #模式匹配
      #          repos:
      #            config-test:
      #              pattern: config*/*
      #              uri: https://gitee.com/itFanRalap/config-test
      #            special:
      #              pattern: special*/dev*,special*/pro*
      #              uri: https://gitee.com/itFanRalap/special
      
    5. 访问规则
      /{application}/{profile}[/{label}]
      /{application}-{profile}.yml
      /{label}/{application}-{profile}.yml
      /{application}-{profile}.properties
      /{label}/{application}-{profile}.properties
      
      • application:表示应用名称,在client中通过spring.config.name配置
      • profile:表示获取指定环境下配置,例如开发环境、测试环境、生产环境 默认值default,实际开发中可以是 dev、test、demo、production等
      • label: 标签,git默认值master

    客户端(config-client)

    1. 添加依赖

      <dependency>
              <groupId>org.springframework.cloud</groupId>
              <artifactId>spring-cloud-starter-config</artifactId>
          </dependency>
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-web</artifactId>
          </dependency>
      
    2. 添加配合

      由于配置的加载顺序
      ------>bootstrap.*
      ------>远程config的配置
      ------>application.*
      所以要将配置放到bootstrap中

      spring:
      application:
        name: special
      cloud:
        config:
          uri: http://ralap:hjx969190@localhost:8060
          profile: pro
          label: master
      

    在application配置

         server:
           port: 8070
    

    注意:application-name 要和远程的项目名称对应, profile对应的是环境,label对应的分支。

    配合Eureka使用

    1. 启动8761Eureka服务
    2. 将ConfigServer注册到Eureka
      • yml配置
      security:
        basic:
          enabled: true
        user:
          name: ralap
          password: hjx969190
      server:
        port: 8060
      eureka:
        client:
          serviceUrl:
            defaultZone: http://ralap:hjx969190@localhost:8761/eureka/
        instance:
          prefer-ip-address: true
      spring:
        application:
          name: config-provider
        cloud:
          config:
            server:
              git:
                uri: https://gitee.com/itFanRalap/{application}
      
      • 添加注解
        @EnableEurekaClient
    3. 将ConfigClient注册到Eureka
      • botstrap.yml中添加配置
        spring:
          application:
            name: special
          cloud:
            config:
              discovery:
                enabled: true
                service-id: config-provider
              profile: dev
              label: master
              username: ralap
              password: hjx969190
        
        #      uri: http://localhost:8060
        #      profile: pro
        #      username: ralap
        #      password: hjx969190
        eureka:
          client:
            serviceUrl:
              defaultZone: http://ralap:hjx969190@localhost:8761/eureka/
          instance:
            prefer-ip-address: true
        
        • 添加注解
          @EnableEurekaClient

    对配置的加密、解密

    0.准备(安装JCE)


    jce.png

    安装对应自己jdk 版本的jjce版本


    version.png
    下载完成解压,覆盖文件
    替换.png
    1. 对称加密
      配置yml(密钥)
      encrypt:
        key: foo
      
      • 加密命令


        加密.png
      • 解密命令


        解密.png

    这个需要注意,我使用的springcloud版本是Dalston.SR4,以上配置在application 中无效,需要加载bootstrap.yml中
    以上是ConfigServer的配置

    修改远程配置文件


    config.png

    ConfigClient无需修改任何配置,即可解密

    点击查看源码

    参考资料

    springcloud(第一篇)springcloud config 入门

    相关文章

      网友评论

          本文标题:SpringCloud---Config(配置中心)

          本文链接:https://www.haomeiwen.com/subject/mzsjmxtx.html