zoukankan      html  css  js  c++  java
  • Git版本控制+配置中心(Spring Cloud Config)(八)

     

    1.1     配置中心Config

    1.1.1      为什么需要使用配置中心来统一管理配置呢?

    通常在一个分布式环境中,同类型的、不同类型的服务有几个,几十个服务实例。如果出现数据源、接口等变更时,程序员通过手工修改配置就可以了。但对于分布式环境中多达上千、上万的服务实例来说,单单修改配置这项目工作就会耗费程序员很多时间和精力。所以为了更好的解决分布式环境下多台服务实例的配置统一管理问题,引入了统一配置管理的方式来解决这类难题。

    1.1.2      介绍

    开发分布式系统如果还是各个服务配置文件单独配置肯定是不行的,springcloud使用的解决方案是搭建配置中心将并指定一个配置文件路径如git项目对配置文件进行统一管理。

    Spring Cloud中,提供了分布式配置中心组件spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。在实现cloud config中,主要有两个角色:作为配置中心连接配置路径的 config server,连接配置中心读取配置的config client

     

    1.2         配置中心服务端

    1.2.1      创建Spring Starter Project工程

    复制eureka-server工程并修改pom文件或者新建子模块

    1.2.2      pom.xml

    1.2.3      application.properties

    spring.application.name=config-server
    server.port=8097
    eureka.client.serviceUrl.defaultZone=http://localhost:6001/eureka

    # 配置git仓库地址
    spring.cloud.config.server.git.uri=https://github.com/nutony/myspringcloudconfig
    # 配置仓库的分支
    spring.cloud.config.label=master
    # 访问git仓库的用户名
    spring.cloud.config.server.git.username=wood
    # 访问git仓库的用户密码 如果Git仓库为公开仓库,可以不填写用户名和密码,如果是私有仓库需要填写
    spring.cloud.config.server.git.password=wood123

    # 打印日志(开发模式)
    logging.level.root=DEBUG

    1.2.4      拓展:从git上获取资源的格式

    /{application}/{profile}[/{label}]

    /{application}-{profile}.yml

    /{label}/{application}-{profile}.yml

    /{application}-{profile}.properties

    /{label}/{application}-{profile}.properties

    application: 表示应用名称,在client中通过spring.config.name配置

    profile:     表示获取指定环境下配置,例如开发环境、测试环境、生产环境 默认值default,实际开发中可以是 devtestdemoproduction

    label:           git标签,默认值master

    访问链接:

    http://localhost:8097/jtver/dev

    http://localhost:8097/foo/default

    http://localhost:8097/foo/development

    1.2.5      Git上传属性文件

    创建仓库myspringcloudconfig,上传属性文件config-client-dev.properties编写内容为:jtver=jt version 4.1

     

    1.2.6      ConfigServerApplication

    @EnableConfigServer

    1.2.7      测试

    http://localhost:8097/config-client/dev

     

    1.3         配置中心客户端

    1.3.1      创建Maven工程

     

    1.3.2      pom.xml

    注意:必须加spring-boot-starter-actuator依赖,否则post请求是报404错误。

    1.3.3      拓展:bootstrapapplication加载顺序

    Spring Boot有两种类型的配置文件,applicationbootstrap文件。Spring Boot会自动加载classpath目前下的这两个文件,文件格式为properties或者yml格式。

    *.properties格式             key=value的形式

    *.yml格式                      key: value的形式,支持树形或者链式结构

    *.yml加载的属性是有顺序的

    application配置文件是应用级别的,是当前应用的配置文件。

    bootstrap配置文件是系统级别的,用来加载外部配置,如配置中心的配置信息,也可以用来定义系统不会变化的属性。

    bootstatp文件的加载先于application文件。

    1.3.4      bootstrap.properties

    注意:说明:此处不能用application.properties,因为代码中使用@Value注解,必须在应用程序执行之前初始化。

    spring.application.name=config-client

    spring.cloud.config.label=master

    spring.cloud.config.profile=dev

    1.3.5      HelloController

        @Value("${jtver}")

        String jtver;

    1.4         动态刷新配置

    1.4.1      解决方案

    Controller类上增加@RefreshScope注解,在bootstrap.properties文件中配置management.security.enabled=false,提交post刷新请求,http://localhost:8098/refresh 就会更新属性值(底层实现要求必须是post请求)。

     

    1.4.3      bootstrap.properties

    注意:说明:此处不能用application.properties,因为代码中使用@Value注解,必须在应用程序执行之前初始化。

    spring.application.name=config-client
    server.port=8098
    eureka.client.serviceUrl.defaultZone=http://localhost:6001/eureka

    spring.cloud.config.label=master
    spring.cloud.config.profile=dev

    #配置中心服务端地址
    spring.cloud.config.uri= http://localhost:8097/

    #要刷新配置信息必须停掉安全访问,并且controller上增加@RefreshScope注解
    management.security.enabled=false
  • 相关阅读:
    浮点数大于0
    坐标变换
    实战c++中的vector系列--正确释放vector的内存(clear(), swap(), shrink_to_fit())
    计算sigma
    ECharts 在winform中使用(访问JS)
    Linux用户锁定、解锁及锁定查看
    vue或者js中平均分割数组
    python 文件读写with open模式r,r+,w,w+,a,a+的区别
    vue 三元表达式当出现elif
    后端排序时去掉element表格排序的null状态
  • 原文地址:https://www.cnblogs.com/wood-life/p/10342776.html
Copyright © 2011-2022 走看看