资讯专栏INFORMATION COLUMN

Spring Cloud Config 学习(二)

Developer / 2417人阅读

摘要:是匹配规则,意思是配置以开头并且以开头的。健康监控集成了。可以通过配置去检查指定的配置文件访问结果如下可以通过设置来禁用健康检查。显示的是类似于用户自己定义的属性的那种黄色背景。意思就是这个不是系统的属性,但是确认是生效的。

《Spring Cloud与Docker 微服务架构实战》学习笔记

Config Client

在上篇文章中,我们已经编写好了 Config Server 那个客户端是如何访问 Config Server 并且获取到对应的配置呢?
下面我们就来了解一下

集成
        
            org.springframework.cloud
            spring-cloud-starter-config
        

在application.properties中配置一下端口:

server.port=8081

创建配置文件bootstrap.yml,然后在其中添加一下内容

spring:
  application:
    # 对应Config Server 中的{application}
    name: microservice-foo
  cloud:
    config:
      # Config Server地址
      uri: http://localhost:8080/
      # profile 对应 Config Server 中的{profile}
      profile: dev
      # label 对应 Config Server 中的{label} Git分支
      label: master

这里只能使用指定的配置配置文件名称,使用其他的文件名称无效

按照书中的说法,Spring Cloud 中有"引导上下文"的概念,这是主应用程序的父上下文。引导上下文负责从配置服务器加载配置属性,以及解密外部配置文件中的属性。

和主应用程序加载application.*(yml或properties)中的属性不同,引导上下文加载bootstrap.*中的属性。配置在bootstrap.*中的属性有更高的优先级,因此默认情况下他们不能被本地
配置覆盖

按照我的理解,简单点来说bootstrap.* 就像是 application.* 的父类,但是有一点不同的是,bootstrap中的属性不会被application.*中的属性所覆盖

只需要这样简单的配置,就已经可以从Config Service 中拉取属性了

验证

验证一下

@RestController
public class ConfigClientController {

    @Value("${profile}")
    private String profile;

    @GetMapping("/profile")
    public String hello() {
        return this.profile;
    }

}

启动 Config Service 启动 Config Client,访问
http://localhost:8081/profile ,显示:

Config Server的Git 仓库配置 占位符支持

Config Service 的占位符支持{application}、{profile} 和 {label}

例如修改原来的Config Service的配置:

spring.application.name=microservice-config-server

# 这个uri使用可以clone的路径
spring.cloud.config.server.git.uri=https://github.com/wkkdhr/{application}.git

# github的账号密码
spring.cloud.config.server.git.username=***
spring.cloud.config.server.git.password=***

在Git上新增配置文件Dome1-dev.properties内容如下:

profile=dome1-dev-1.0

然后访问 http://localhost:8080/Dome1-dev.properties 即可得到如下结果:

profile: dome1-dev-1.0

书中说这样可以支持一个应用一个Git仓库。看到这里应该明白了,书中所说的占位符{application}、{profile} 和 {label} 指的是访问url中的对应的内容。例如访问路径是 http://localhost:8080/Dome1-dev.properties 时,其中 Dome1 就是{application},dev 就是 {profile} ,{label} 被省略,默认 master。按照配置文件中的配置https://github.com/wkkdhr/{application}.git 系统就会去 https://github.com/wkkdhr/Dom... 这个Git仓库中,找到 Dome1-dev.properties 这个配置文件。

匹配模式

配置模式就是通过匹配要访问的配置文件名称,来访问不同的git仓库。如果没有符合的,就会访问spring.cloud.config.server.git.uri所定义的仓库

配置模式是{application}/{profile}。多个匹配规则用逗号,分隔

例如:

spring.cloud.config.server.git.uri=https://github.com/wkkdhr/Dome1.git

spring.cloud.config.server.git.repos.test.pattern=test*/dev*
spring.cloud.config.server.git.repos.test.uri=https://github.com/wkkdhr/configTest.git

就以上面配置为例子,其中repos.test.pattern中的test可以是名称可以自己起。test*/dev*是匹配规则,意思是配置{application}以test开头并且{profile}以dev开头的。如果符合匹配规则就回去访问https://github.com/wkkdhr/configTest.git这个仓库。

http://localhost:8080/test-dev.properties 这里路径,{application}是test,{profile}是dev,符合上面所定义的规则,所以就会去访问spring.cloud.config.server.git.repos.test.uri所定义的仓库。

如果是 http://localhost:8080/test-d1.properties 这个。它就是不符合规则的,就会去访问https://github.com/wkkdhr/Dome1.git 这个仓库。

spring.cloud.config.server.git.repos.simple=https://github.com/wkkdhr/simple.git

如果像上面那样配置,就只会匹配以test开头的配置文件。

同时这个目标地址还可以配置成本地的路径:

spring.cloud.config.server.git.repos.local.pattern=test*
spring.cloud.config.server.git.repos.local.uri=file:/D:projectdemogithubconfigTest
搜索目录

这个就比较见到了,就是可以去搜索目标Git仓库的子目录。如果是子目录的子目录,需要填写路径

spring.cloud.config.server.git.uri=https://github.com/wkkdhr/Dome1.git
spring.cloud.config.server.git.search-paths=test1,test1*,file/test1,file/test*
启动时加载配置文件
spring.cloud.config.server.git.clone-on-start=true

通过配置clone-on-start来让Config Service启动时就clone指定的Git仓库

或者是给指定Git仓库多带带配置:

spring.cloud.config.server.git.repos.test.uri=https://github.com/wkkdhr/configTest.git
spring.cloud.config.server.git.repos.test.clone-on-start=true

以下配置可以打印相关日志,但是也会同时打印许多不相关的配置信息,自行斟酌。

logging.level.org.springframework.cloud=debug
logging.level.org.springframework.boot=debug
Config Service 健康监控

Config Service 集成了 Actuator。可以通过访问 health的端口来查询当前的健康状态。

# 配置来让health显示详细信息
management.endpoint.health.show-details=always

书中说,默认情况下,健康指示器向EnvironmentRepository请求的{application}是app,{profile}和{lable}是对应的EnvironmentRepository 实现的默认值。对于Git,{profile} 是 default,{ablel}是master.
但是我在配置仓库并没有相应的配置文件,结果仍旧显示UP。没有深究。

可以通过配置去检查指定的配置文件:

spring.cloud.config.server.health.repositories.test.name=test
spring.cloud.config.server.health.repositories.test.label=master
spring.cloud.config.server.health.repositories.test.profiles=dev

访问 http://localhost:8080/actuator/health 结果如下:

{
    "status": "UP",
    "details": {
        "diskSpace": {
            "status": "UP",
            "details": {
                "total": 214752784384,
                "free": 135328772096,
                "threshold": 10485760
            }
        },
        "refreshScope": {
            "status": "UP"
        },
        "configServer": {
            "status": "UP",
            "details": {
                "repositories": [
                    {
                        "name": "test",
                        "profiles": [
                            "dev"
                        ],
                        "label": "master"
                    }
                ]
            }
        }
    }
}

可以通过设置 spring.cloud.config.server.health.enabled=false来禁用健康检查。

spring.cloud.config.server.health.enabled=false

发现一个事情,就是在spring配置文件中,有很多配置都是没有提示的,就像上面这个属性。显示的是类似于用户自己定义的属性的那种黄色背景。意思就是这个不是系统的属性,但是确认是生效的。我一开始还以为是过时的配置之类,大概是 spring 全家桶配置太多了,idea 也没有办法给出全部的提示吧。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/76042.html

相关文章

  • 6、如何获取配置中心的配置

    摘要:在配置中心这一篇博文里学习了如何获取配置文件。先在仓库中创建如下配置文件具体参考下面地址创建项目,对应的如下其中与可以二选一,但是根据选择的依赖不同对应的配置文件有些许不一样。 在《配置中心》这一篇博文里学习了如何git获取配置文件。大概的流程可以用下图来概括。 showImg(https://segmentfault.com/img/bVbtW4Y?w=421&h=363); 《配置...

    weapon 评论0 收藏0
  • springCloud学习2(服务发现)

    摘要:服务消费者可以使用多种模型来发现服务。客户端将定期与服务发现层进行通信,并刷新服务实例的缓存。为了达成目的,我们将要学习使用个不同的客户端库,服务消费者可以使用它们来和进行交互。 本篇代码存放于:github 一、服务发现架构   服务发现架构通常具有下面 4 个概念: 服务注册:服务如何使用服务发现代理进行注册? 服务地址的客户端查找:服务客户端查找服务信息的方法是什么? 信息共享...

    史占广 评论0 收藏0
  • 深入理解Spring Cloud与微服务构建【】 - 2.2 Spring Cloud

    摘要:负载均衡组件是一个负载均衡组件,它通常和配合使用。和配合,很容易做到负载均衡,将请求根据负载均衡策略分配到不同的服务实例中。和配合,在消费服务时能够做到负载均衡。在默认的情况下,和相结合,能够做到负载均衡智能路由。 2.2.1 简介 Spring Cloud 是基于 Spring Boot 的。 Spring Boot 是由 Pivotal 团队提供的全新 Web 框架, 它主要的特点...

    Rocko 评论0 收藏0
  • 两年了,我写了这些干货!

    摘要:开公众号差不多两年了,有不少原创教程,当原创越来越多时,大家搜索起来就很不方便,因此做了一个索引帮助大家快速找到需要的文章系列处理登录请求前后端分离一使用完美处理权限问题前后端分离二使用完美处理权限问题前后端分离三中密码加盐与中异常统一处理 开公众号差不多两年了,有不少原创教程,当原创越来越多时,大家搜索起来就很不方便,因此做了一个索引帮助大家快速找到需要的文章! Spring Boo...

    huayeluoliuhen 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<