1.Spring Cloud 之创建配置中心服务-服务端

2017-09-07  本文已影响531人  PKAQ

在开发微服务时,各个服务有一些共同的配置,若是几十个微服务那么便需要将这些配置复制几十份.在开发过程中,对这些配置文件的编辑维护是一件十分麻烦的事情,若是可以对这些公用配置进行统一配置无疑将会极大减轻维护的难度和工作量,借助spring提供的配置中心服务可以对这些公共配置进行统一管理,具体操作如下

1 创建配置中心仓库

2 创建配置中心文件

其中spring.cloud.config.server.git.uri支持如下几种方式进行配置

2.1 版本控制系统(git,svn)

   spring:
      cloud:
        config:          
          server:
            git:
              uri: https://git.oschina.net/pkaq/spring-cloud-7simple.git
              # 从该库下的cloud-cconig-repo路径下加载,这里如果需要配置多个可以用`,`分隔开
              search-paths: cloud-config-repo

如果采用的svn作为版本控制,只需要将git节点替换为svn即可

伴随着版本控制系统作为后端(git svn,文件都会被check outclone到本地文件系统中. 默认这些文件会被放置到以config-repo-为前缀的系统临时目录中.在 linux 譬如应该是 /tmp/config-repo-<randomid>录.这会导致不可预知的问题出现.为了避免这个问题,通过设置spring.cloud.config.server.git.basedir参数值为非系统临时目录.

2.1.1 认证配置

对于需要进行认证的远程配置库,可以使用HTTP的 basic authentication 方法进行认证,只需要添加username,password 属性即可

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/pkaq/springcloud7.git
          username: tiger
          password: scott

这个比较简单,只要将uri中的地址换成对应的ssh地址,并且保证你本地~/.ssh目录中存储好认证的key即可

2.1.2 模式匹配多个仓库

spring:
  cloud:
    config:
      server:
        git:
        # 远程仓库地址
          uri: https://github.com/pkaq/springcloud7.git
        # 子目录
          search-paths: cloud-config-repo
        # 在启动时就下载配置文件
          clone-on-start: true
        # 读取配置超时时间 默认5s
          timeout: 15
        # 强制读取远程版本(当本地版本被篡改时仍然保证使用远程副本)
          force-pull: true
#          多仓库配置
          repos:
#            别名,随意
            repo-a:
#               匹配符
               pattern:
                  - 'bravo*'
#               仓库地址
               uri: http://git/config-repo.git
            repo-b:
               pattern:
                  - 'alpha*'
               uri: file://D:/git/spring-cloud-7simple

客户端可以通过spring.application.namespring.cloud.config.name来多个库中的application部分描述,通过spring.cloud.config.profile配置profile部分的描述.如果加载不到响应的配置文件则从git.uri下进行加载.

注意:添加多个模式库配置后,直接通过浏览器访问配置中心服务会将默认配置也加载出来

2.1.3 clone-on-start

默认情况下,配置服务会在配置文件第一次被请求时clone远程的配置库.当然也可以配置为在启动时clone远程的配置库
只需要配置spring.cloud.config.server.git.clone-on-starttrue即可

2.2 native filesystem

可以通过采用本地文件系统的方式访问配置文件

spring:
  cloud:
    config:      
      server:
        native:
          search-locations: file:///${path}/config-repo

可支持以[classpath:/, classpath:/config,file:./, file:./config]等方式加载

p.s:注意,这里有个坑winfile后需要多加个/即,file:///${path}/config-repo

2.3 vault

可以通过spring.cloud.config.server.vault节点对vault方式进行配置

3 使用@EnableConfigServer注解发布配置服务

1.添加 spring-cloud-config-server 相关依赖

compile "org.springframework.cloud:spring-cloud-config-server:1.5.6.RELEASE"

2.在你的spring boot启动类上添加@EnableConfigServer注解
3.启动服务,大功告成.

p.s:application.properties, application.yml, application-*.properties这类配置文件都会通过服务发布出去.但是,当采用native filesystem方式时,application*此类文件不会被发布.

4 访问配置

可以通过如下规则对配置资源进行访问读取profile的优先级,激活的profiles的优先级高于defaults,有多个profiles,最后一个起作用。

/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
配置资源规则

5 健康检查

spring:
  cloud:
    config:
      server:
        health:
          repositories:
            myservice:
              label: mylabel
            myservice-dev:
              name: myservice
              profiles: development

可以通过设置spring.cloud.config.server.health.enabled=false 来禁用运行状况指示器。

6 安全配置

为了保证配置中心配置项的安全性,通常需要对访问进行限制,可以借助spring-ssecurity,对配置中心服务添加身份认证.
  1.需要添加spring-boot-starter-security依赖包
  2.进行安全认证配置

# 访问认证
security:
  basic:
    enabled: true
  user:
    name: pkaq
    password: pkaqx

参考

上一篇下一篇

猜你喜欢

热点阅读