SpringCloud之分布式配置中心客户端 spring-cloud-config

分布式配置中心客户端的作用是从github 或者 是 gitlab上加载配置 而不自己手动配置

在某个服务的pom.xml中加入spring-cloud-config客户端依赖(每个服务都可使用,这里以feign消费者为例)

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

 先给feign的application.yml 配置 cloud-config

  feign服务的原始application.yml

spring:
  application:
    name: hello-spring-cloud-web-admin-feign
  thymeleaf:
    cache: false
    mode: LEGACYHTML5
    encoding: UTF-8
    servlet:
      content-type: text/html
  cloud:                                        //云配置
    config:
      uri: http://localhost:8888
      name: web-admin-feign                     //对应gitlab仓库中master分支下的
                                                 web-admin-feign-dev.yml文件
      label: master
      profile: dev

server:
  port: 8765

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

 
  feign服务简化后的application.yml

spring: 
  cloud:                                        //云配置
    config:
      uri: http://localhost:8888
      name: web-admin-feign                     //对应gitlab仓库中master分支下的
                                                 web-admin-feign-dev.yml文件
      label: master
      profile: dev

  因为配置文件全都托管在github或者gitlab平台上,所以只需加载到对应的配置文件,而无需在此文件中配置大多数信息

  • spring.cloud.config.uri:配置服务中心的网址
  • spring.cloud.config.name:配置文件名称的前缀
  • spring.cloud.config.label:配置仓库的分支
  • spring.cloud.config.profile:配置文件的环境标识
    • dev:表示开发环境
    • test:表示测试环境
    • prod:表示生产环境
       

 

   你们可能会问这里的feign服务在run入口类时能够加载到gitlab后者github上对应的配置文件?
   从上面feign的application.yml中可以看出spring.cloud.config.uri 为 http://localhost:8888
    而http://localhost:8888正是spring-cloud-config配置中心
    那我们再来看看spring-cloud-config配置中心中的application.yml又配置了什么
 
 spring-cloud-config模块(配置中心)

spring:
  application:
    name: hello-spring-cloud-config
  cloud:
    config:
      label: master
      server:
        git:
          uri: http://192.168.106.133/EinBlatt/spring-cloud-config.git
          search-paths: respo
          username: einblatt
          password: einblatt

server:
  port: 8888

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

 这下明白了吧,每个服务通过spring.cloud.config.uri属性找到配置中心
  而配置中心中配置了连接同一管理配置文件的github或者gitlab仓库的地址
  所有的服务的配置文件可以托管在这(这就是配置文件在云上)
  在feign服务的application.yml配置文件中又指定了配置文件名和Pprofile(
配置文件的环境标识
-springboot profile)
  所以在不同的环境下可以加载到不同的配置文件
   如果项目上线了直接将feign服务的applicaition.yml中的spring.cloud.config.profile改成prod
   这时feign项目就会自动加载你配置的好的web-admin-feign-prod.yml  这样无需关注你feign服务的application.yml
   的其他配置信息像eureka的url等等,只需更新github上或者gitlab上的配置文件,并且找到此对应的配置文件即可,是不
   是就是云配置了
   

 

 

 但其实这并非是真正的配置上云了,你想一般每个小的服务都会用maven打成jar包的形式运行(假如在windows上,先不说   linux),假如之前你是开发环境,用的配置文件是web-admin-feign-dev.yml,这时项目要上线了,然而你已经打包好了jar,
 你这时又的去改改你项目的application.yml中的spring.cloud.config.profile为prod,再次打成jar然后再运行,是不是很
  麻烦,那么如何解决这个问题呢,自古上有计策下有对策嘛


  操作起来很简单,只需要为不同的环境编写专门的配置文件,如:web-admin-feign-dev.ymlweb-admin-feign-prod.yml, 启动项目 时只需要增加一个命令参数 --spring.profiles.active=环境配置 即可,启动命令如下:

在项目 mvn clean package后
这样运行项目
  如果你是开发环境在cmd运行;

java -jar hello-spring-cloud-web-admin-feign-1.0.0-SNAPSHOT.jar --spring.profiles.active=dev

 如果你是上线环境在cmd运行;

java -jar hello-spring-cloud-web-admin-feign-1.0.0-SNAPSHOT.jar --spring.profiles.active=prod


 

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章