文档章节

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

逝去的回忆
 逝去的回忆
发布于 2017/02/17 17:46
字数 1650
阅读 63
收藏 0

  创建配置管理服务器及实现分布式配置管理应用。

  本文涉及到的项目:

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

  

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

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

  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.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

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

本文转载自:http://www.cnblogs.com/skyblog/p/5129603.html

共有 人打赏支持
逝去的回忆
粉丝 13
博文 136
码字总数 219872
作品 0
深圳
高级程序员
私信 提问
SpringCloud--鸿鹄Cloud分布式微服务云系统

简介 鸿鹄云Cloud是基于SpringCloud来封装的,是一系列框架的有序集合。利用Spring Boot的开发模式简化了分布式系统基础设施的开发,如服务发现、注册、配置中心、消息总线、负载均衡、断路器...

itcloud
07/25
0
0
Spring Cloud-honghu Cloud分布式微服务云系统

简介 鸿鹄云Cloud是基于SpringCloud来封装的,是一系列框架的有序集合。利用Spring Boot的开发模式简化了分布式系统基础设施的开发,如服务发现、注册、配置中心、消息总线、负载均衡、断路器...

itcloud
04/25
0
0
【Spring Cloud】分布式必学springcloud(一)——简介和看法

一、前言 开篇之前,我想说,springcloud会完胜dubbo。 小编以前做分布式是用的webservice、dubbo。最近的项目中,开始使用了springcloud,springcloud包含了很多的组件,这些组件是dubbo没有...

kisscatforever
04/16
0
0
史上最简单的 SpringCloud 教程 | 终章

版权声明:本文为博主原创文章,欢迎转载,转载请注明作者、原文超链接 ,博主地址:http://blog.csdn.net/forezp。 https://blog.csdn.net/forezp/article/details/70148833 转载请标明出处...

方志朋
2017/04/12
0
0
Spring Cloud-Honghu Cloud分布式微服务云系统(一)

简介 鸿鹄云Cloud是基于SpringCloud来封装的,是一系列框架的有序集合。利用Spring Boot的开发模式简化了分布式系统基础设施的开发,如服务发现、注册、配置中心、消息总线、负载均衡、断路器...

明理萝
09/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Docker的架构与自制镜像的发布

一. docker 是什么 大家都知道虚拟机吧,windows 上装个 linux 虚拟机是大部分程序员的常用方案。公司生产环境大多也是虚拟机,虚拟机将物理硬件资源虚拟化,按需分配和使用,虚拟机使用起来...

程序猿拿Q
19分钟前
4
0
ubuntu下pycharm调用Hanlp实践分享

前几天看了大快的举办的大数据论坛峰会的现场直播,惊喜的是hanlp2.0版本发布。Hanlp2.0版本将会支持任意多的语种,感觉还是挺好的!不过更多关于hanlp2.0的信息,可能还需要过一段时间才能看...

左手的倒影
28分钟前
2
0
Python监控服务器实现邮件微信报警[未测试]

本文中笔者暂时实现的只有cpu和内存的监控,python可以监控许多的主机信息,网络,硬盘,机器状态等,以下是代码的实现,代码可以实现windows和linux的监控。 实验环境:Ubuntu16.04和windo...

dragon_tech
33分钟前
1
0
Spring Boot 返回 JSON 数据,一分钟搞定!

在 WEB 项目中返回 JSON 数据是常见的交互形式,在 Spring Boot 中这一切都变得十分简单。So easy!!! 你所需具备的基础 什么是 Spring Boot? Spring Boot 核心配置文件详解 Spring Boot 开启...

Java技术栈
38分钟前
2
0
保护Hadoop集群三大方法

大约在两年前,开源数据库解决方案MongoDB以及Hadoop曾遭受过大量恶意攻击,这些攻击后被统称为“勒索软件”,因为其攻击者会擦除或加密数据,然后向被攻击者索要资金以恢复数据。自今年以来...

linuxCool
45分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部