Springcloud配置中心入门篇

资料

 

为什么要用springcloud配置中心

众所周知,采用分布式架构的系统意味着将单体应用中的不同的业务拆分成一个一个的子服务,如果每个子服务的
拆分粒度比较小的话,那么这个系统将会出现大量的服务,而我们在运行服务前,要给每个服务都进行必要的信息
的配置,服务才能正常运行,比如采用eureka注册中心的,需要给子服务添加eureka的配置,为了方便管理这些
子服务的配置文件,所以需要一个集中的,动态的管理工具。 所以springcloud为我们提供了ConfigServer配置中心。
 

几个概念

ConfigServer:配置中心服务,连接子服务和我们配置文件管理工具的中间人
ConfigClient:服务客户端,也是将配置文件托管给配置中心的甲方
仓库:例如github,码云等基于git协议的仓库,能够帮助我们对配置文件进行集中管理以及版本控制
 

图解

 

========================仓库配置文件=====================

就拿码云为例
  • 在码云上创建一个名为SpringCloudConfig的仓库
  • 将微服务的配置文件拷贝一份
  • 在建好的仓库中新建一个文件
  • 将复制好的配置,粘贴进去,然后给文件起一个名字,名字的规则就是如下的配置
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • / { 应用名 } / { 环境名 } [ / { 分支名 } ]
  • / { 应用名 } - { 环境名 }.yml
  • / { 应用名 } - { 环境名 }.properties
  • / { 分支名 } / { 应用名 } - { 环境名 }.yml
  • / { 分支名 } / { 应用名 } - { 环境名 }.properties
例如:eureka-dev.yml   这里面eureka就是应用名,dev就是环境名
 

配置规则详解

这里的application可以自定义为其它的名称,这里可以用应用的名称,即应用名,后边的dev、stable、prod这些都可以视为一个应用下多个不同的配置文件,可以当做环境名,以下均用环境名代称。
Config支持我们使用的请求的参数规则为:
  • / { 应用名 } / { 环境名 } [ / { 分支名 } ]
  • / { 应用名 } - { 环境名 }.yml
  • / { 应用名 } - { 环境名 }.properties
  • / { 分支名 } / { 应用名 } - { 环境名 }.yml
  • / { 分支名 } / { 应用名 } - { 环境名 }.properties
注意:
  1. 第一个规则的分支名是可以省略的,默认是master分支
  2. 无论你的配置文件是properties,还是yml,只要是应用名+环境名能匹配到这个配置文件,那么就能取到
  3. 如果是想直接定位到没有写环境名的默认配置,那么就可以使用default去匹配没有环境名的配置文件
  4. 使用第一个规则会匹配到默认配置
  5. 如果直接使用应用名来匹配,会出现404错误,此时可以加上分支名匹配到默认配置文件
  6. 如果配置文件的命名很由多个-分隔,此时直接使用这个文件名去匹配的话,会出现直接将内容以源配置文件内容直接返回,内容前可能会有默认配置文件的内容(已测试)
 

========================config服务端========================

搭建一个springboot微服务
 
1、添加依赖
 
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
</dependency>

2、启用configserver

在新建的Config微服务的启动项上加上注解:@EnableConfigServer
 
3、修改配置
 
server:
  port: 9999
spring:
  application:
    name: config-server #微服务应用名
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/ming_5257/SpringCloudConfig.git  #git仓库的地址
          search-paths: SpringCloudConfig/eureka-dev.yml     #配置仓库路径
          username: *************
          password: ********

========================config客户端========================

1、添加依赖
 
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-config -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
    <version>2.2.1.RELEASE</version>
</dependency>

2、添加bootstrap.yml配置文件

spring:
  application:
    name: search-service #服务的名称(仓库设置的配置文件的应用名相同,具体的看上面的配置规则详解)
  cloud:    #配置中心相关
    config:
      profile: dev     #环境配置(开发,测试,生产)
      label: master    #分支配置
      uri: http://********** #配置中心的网址
    discovery:
        enabled: true #从配置中心读取文件

 

==========================配置中心与注册中心的整合======================

没有整合注册中心的配置中心,是直接通过访问配置中心的uri来进行通讯的,这样将配置中心的地址写死了。
所以我们可以将配置中心注册到eureka上。
 
  • 改写配置中心的配置文件,主要是添加eureka的配置
server:
  port: 9999
spring:
  application:
    name: config-server #微服务应用名
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/ming_5257/SpringCloudConfig.git  #git仓库的地址
          search-paths: SpringCloudConfig/eureka-dev.yml     #配置仓库路径
          username: *************
          password: ********
# eureka
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka
    registry-fetch-interval-seconds: 10
  instance:
    lease-renewal-interval-in-seconds: 5
    lease-expiration-duration-in-seconds: 15

 

  • ServerClient的配置
spring:
  application:
    name: search-service #服务的名称(仓库设置的配置文件的应用名相同,具体的看上面的配置规则详解)
  cloud:    #配置中心相关
    config:
      profile: dev     #环境配置(开发,测试,生产)
      label: master    #分支配置
      uri: http://********** #配置中心的网址
    discovery:
        enabled: true #从配置中心读取文件
            service-id: config-server #配置中心在eureka的服务名称
#Eureka的配置
eureka:
 client:
   service-url:
     defaultZone: http://127.0.0.1:10086/eureka
   registry-fetch-interval-seconds: 5

 

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