您的位置:首页 > 编程语言 > Java开发

spring cloud的学习过程(二)

2018-01-05 10:24 363 查看
上篇回忆:spring cloud 的学习过程 (一)

使用 spring cloud 实现分布式配置管理

创建配置管理服务器及实现分布式配置管理应用。
   本文涉及到的项目:
 开源项目:http://git.oschina.net/zhou666/spring-cloud-7simple
 cloud-config-repo:配置文件存放的文件夹 
     cloud-simple-service:一个使用 mybatis 的数据库应用

 分布式配置管理应该是分布式系统和微服务应用的第一步。想象一下如果你有几十个服务或 应用需要配置,而且每个服务还分为开发、测试、生产等不同维度的配置,那工作量是相当大的, 而且还容易出错。如果能把各个应用的配置信息集中管理起来,使用一套机制或系统来管理,那么 将极大的提高系统开发的生产效率,同时也会提高系统开发环境和生产环境运行的一致性。  


在传统开发中我们往往需要自己开发“配置管理服务器”,你可以使用 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 工程后,也就是文章开头所提到的工程,在此工程再创建一个文件夹 cloudconfig-repo 来存放配置文件。然后创建两个配置文件:
         *   cloud-config-dev.properties 
         *   cloud-config-test.properties
 这两个文件分别对应开发环境和测试环境所需要的配置信息,
4000
配置信息如下:
         mysqldb.datasource.url=jdbc\:mysql\://10.0.12.170\:3306/test?useUnicode\=true&characterEncoding\=utf8
         mysqldb.datasource.username=csst  
         mysqldb.datasource.password=csst 
         logging.level.org.springframework.web:DEBUG
 配置信息提供了数据库连接参数等,这是因为后面的应用服务中使用到了数据库。

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 

  此时应用就会加载测试环境下的配置信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: