51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2353|回复: 0
打印 上一主题 下一主题

[讨论] 使用spring cloud实现分布式配置管理

[复制链接]
  • TA的每日心情
    无聊
    2024-11-5 10:03
  • 签到天数: 77 天

    连续签到: 1 天

    [LV.6]测试旅长

    跳转到指定楼层
    1#
    发表于 2018-3-21 15:53:34 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
      分布式配置管理应该是分布式系统和微服务应用的第一步。想象一下如果你有几十个服务或应用需
    要配置,而且每个服务还分为开发、测试、生产等不同维度的配置,那工作量是相当大的,而且还容易出
    错。如果能把各个应用的配置信息集中管理起来,使用一套机制或系统来管理,那么将极大的提高系统开
    发的生产效率,同时也会提高系统开发环境和生产环境运行的一致性。



      在传统开发中我们往往需要自己开发“配置管理服务器”,你可以使用redis、ldap、zookeeper、db等
    来存放统一配置信息,然后开发一个管理界面来进行管理。传统的做法没什么问题,和spring cloud所提
    供的配置管理方案相比,就是前者需要自己开发,而后者直接简单使用现成的组件即可。当然还有很重
    要的一点,spring 配置管理模块由于是spring boot核心来实现的,因此做了大量的工作,可以把一些启动
    参数进行外部配置,这在传统的方案中是很难办到的,因为涉及到要改写第三方组件的问题,难度很大
    。比如web应用的绑定端口,传统应用只能在tomcat配置文件里改,而spring cloud却可以放到远程,类
    似的还有数据库连接、安全框架配置等。

      要使用spring cloud分布式配置文件总体上分为3个大的步骤,首选你需要创建存放配置文件的仓库,
    然后创建一个配置文件服务器,该服务器将配置文件信息转化为rest接口数据,然后创建一个应用服务,
    该服务演示使用分布式配置文件信息。

      1)创建配置文件存放仓库

      Spring cloud使用git或svn存放配置文件,默认情况下使用git,因此你需要安装git私服或者直接使用互
    联网上的github或者git.oschina,这里推荐使用git.oschina。本文示例使用的是git.oschina,创建好git工程后,
    也就是文章开头所提到的工程,在此工程再创建一个文件夹cloud-config-repo来存放配置文件。然后创建两
    个配置文件:

    cloud-config-dev.properties
    cloud-config-test.properties
          这两个文件分别对应开发环境和测试环境所需要的配置信息,配置信息如下:

      mysqldb.datasource.url=jdbc\:mysql\://10.0.12.170\:3306/test?useUnicode\=true&characterEncoding
    \=utf-8

      mysqldb.datasource.username=csst

      mysqldb.datasource.password=csst

      logging.level.org.springframework.webEBUG

      配置信息提供了数据库连接参数等,这是因为后面的应用服务中使用到了数据库。

      2)创建spring cloud配置服务器

      配置文件仓库创建好了后,就需要创建配置管理服务器,如前所述该服务器只是将配置文件转换为rest
    接口服务,不做其它用途。这个服务器的功能也是spring cloud提供的,所以我们只需要引入相关jar包,稍
    微设置一下即可。创建该服务应用,你需要首选创建一个空的maven工程:



      然后在这个工程中增加一个类,命名为:ConfigServerApplication,代码如下:

      @SpringBootApplication

      @EnableConfigServer

      public class ConfigServerApplication {

               public static void main(String[] args) {

                SpringApplication.run(ConfigServerApplication.class, args);

               }

      }

      可以看到,我们只需要用@EnableConfigServer激活该应用为配置文件服务器即可。如此以来该应用启动
    后就会完成前面提到的功能,即:读取远程配置文件,转换为rest接口服务。

    当然,需要配置远程配置文件读取路径,在application.properties中:

      server.port=8888

      spring.cloud.config.server.git.uri=https://git.oschina.net/zhou666/spring-cloud-7simple.git

      spring.cloud.config.server.git.searchPaths=cloud-config-repo

      其中server.port是配置当前web应用绑定8888端口,git.uri指定配置文件所在的git工程路径,searchPaths
    表示将搜索该文件夹下的配置文件(我们的配置文件放在spring-cloud-7simple这个工程的cloud-config-repo文
    件夹下)。

      最后,还需要在pom文件中增加配置服务器的相关依赖:

      <dependency>

                         <groupId>org.springframework.cloud</groupId>

                         <artifactId>spring-cloud-config-server</artifactId>

      </dependency>

      如此以来,配置文件服务器就建立好了,可以直接启动了,服务端口是8888,应用只需要绑定改服务器
    的uri和端口号就可以拿到配置信息了。

      3)  创建一个服务使用该远程配置

      现在可以创建一个服务使用该远程配置了,你可以在远程配置中定义一个简单的自定义信息,比如:

      my.message=helloword

      然后使用前面我们提到的spring boot helloworld应用来读取这个信息。当然,限于篇幅我们直接使用比较
    复杂的一个服务来演示这个配置管理器的使用,这个服务需要用到数据库访问,数据库访问层我们使用的是
    mybaits,数据表只有一个,DDL如下:

      CREATE TABLE `user` (

           `id` varchar(50) NOT NULL DEFAULT '',

           `username` varchar(50) DEFAULT NULL,

           PRIMARY KEY (`id`)

      ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

      创建好数据表后,回到我们的应用服务:



      该服务使用DataSourceProperties封装了mybatis加载配置信息。要拿到远程配置信息,需要设置配置管
    理服务器地址,该配置设置在:

      bootstrap.properties

      该配置文件信息如下:

      spring.cloud.config.uri=http://127.0.0.1{config.port:8888}

      spring.cloud.config.name=cloud-config

      spring.cloud.config.profile=${config.profile:dev}

      其中config.uri指定远程加载配置信息的地址,就是前面我们刚建立的配置管理服务器的地址,绑定端口
    8888,其中config.port:8888,表示如果在命令行提供了config.port参数,我们就用这个端口,否则就用8888
    端口。config.name表示配置文件名称,查看我们前面创建配置文件,是这个名称:

      cloud-config-dev.properties

      可以分成两部分: {application}- {profile}.properties

      所以我们配置config.name为cloud-config,config.profile为dev,其中dev表示开发配置文件,配置文件仓
    库里还有一个测试环境的配置文件,切换该配置文件只需要将dev改为test即可,当然这个参数也可以由启动
    时命令行传入,如:

      java -jar cloud-simple-service-1.0.0.jar --config.profile =test

      此时应用就会加载测试环境下的配置信息。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-24 00:30 , Processed in 0.064767 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表