文档章节

Spring Cloud(4)——分布式配置中心

会跳舞的机器人
 会跳舞的机器人
发布于 2017/03/30 21:58
字数 1003
阅读 76
收藏 2

一、简介

Spring Cloud Config是一个配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git以及Subversion。 Spring Cloud Config分为两部分

  • config-server:配置服务端,负责管理配置信息
  • config-client:配置客户端,通过调用server端暴露的接口来换取配置信息

二、项目实例

创建maven工程microservice-config-server

1、在pom.xml中加入以下依赖

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.4.RELEASE</version>
  </parent>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-config-server</artifactId>
    </dependency>
  </dependencies>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>Camden.SR5</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

2、创建ConfigServerApplication.java

package com.baibei.config.server;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;

/**
 * @author: 会跳舞的机器人
 * @email:2268549298@qq.com
 * @date: 17/2/19 下午2:35
 * @description:分布式配置中心启动主类
 */
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApplication.class, args);
    }
}

添加@EnableConfigServer注解开启Config Server

3、在resource文件夹下创建application.properties文件

#config-server对外提供的端口
server.port=9001

#git repo的url地址
spring.cloud.config.server.git.uri=https://git.oschina.net/dreyer/microservice-config-repo.git
#指定搜索路径,config-server会自动搜索根目录和指定目录(逗号分隔)下的文件
spring.cloud.config.server.git.searchPaths=api,backend
#有读取权限的git用户
spring.cloud.config.server.git.username=username
#git用户密码
spring.cloud.config.server.git.password=password

4、服务端验证

为了完成服务端的验证,我们需要在git上创建一个项目作为配置仓库,目录结构如下:

  .
  ├── api
  │   ├── business-dev.properties
  │   ├── business-prod.properties
  │   └── business-test.properties
  ├── exchange
  │   ├── business-dev.properties
  │   ├── business-prod.properties
  │   └── business-test.properties
  ├── component-dev.properties
  ├── component-prod.properties
  ├── component-test.properties
  ├── database-dev.properties
  ├── database-prod.properties
  ├── database-test.properties

接下来,我们就可以通过URL来访问到我们配置的内容了。 例如我们可以通过http://localhost:9001/database-dev.properties来访问database-dev.properties文件的内容,也可以通过http://localhost:9001/database/dev来访问

URL与配置文件的映射关系如下:

例如database-dev.properties 对应{application}-{profile}.properties, {application} 就是 database, {profile}就是dev。 {label}对应git上不同的分支,默认为master。

5.使用本地配置

开发人员在本机进行开发时,可能会用到自已本地的一些配置信息,如果把这些配置提交至git上的话,又会影响到其他同事的开发,那么在这种场景下,开发人员是可以选择使用本地配置,而不是git上的配置信息的,做法也很简单,只需要在config-server的application.properties中添加spring.profiles.active=native,然后把相关的配置文件放在src/main/resource下即可

6、配置中心客户端

Spring Cloud(2)—服务提供者 中的microservice-provider-user作为配置中心客户端

6.1. 在pom.xml中增加Config Server所需要的jar包

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>

6.2. 创建bootstrap.properties来指定Config Server配置,内容如下:

spring.cloud.config.uri=http://localhost:9001/
spring.cloud.config.profile=dev
spring.cloud.config.label=master
spring.cloud.config.name=database,component,business

内容含义如下:

  • spring.application.name:对应前配置文件中的{application}部分
  • spring.cloud.config.profile:对应前配置文件中的{profile}部分
  • spring.cloud.config.label:对应前配置文件的git分支
  • spring.cloud.config.uri:配置中心的地址

以上工作完成后,在代码中我们就可以使用@Value注解来调用相关的配置信息,

@Value("${datasource.url}")
private String dataSourceUrl;

配置中心完成之后,在microservice-provider-user工程的application.properties中的数据库配置就可以换为

spring.datasource.url=${datasource.url}
spring.datasource.username=${datasource.username}
spring.datasource.password=${datasource.password}

在配置中心客户端启动的时候,我们也可以看到相关的日志信息输出

2017-02-19 15:17:28.220  INFO 11206 --- [           main] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at: http://localhost:9001/
2017-02-19 15:17:29.565  INFO 11206 --- [           main] c.c.c.ConfigServicePropertySourceLocator : Located environment: name=database,component,business, profiles=[dev], label=master, version=a9f8f18e682a03f4d7f046c754472f394313fa82, state=null
2017-02-19 15:17:29.565  INFO 11206 --- [           main] b.c.PropertySourceBootstrapConfiguration : Located property source: CompositePropertySource [name='configService', propertySources=[MapPropertySource [name='configClient'], MapPropertySource [name='https://git.oschina.net/dreyer/microservice-config-repo.git/database-dev.properties']]]
2017-02-19 15:17:29.595  INFO 11206 --- [           main] c.b.p.user.UserProviderApplication       : No active profile set, falling back to default profiles: default

附项目目录截图:

image

© 著作权归作者所有

会跳舞的机器人
粉丝 6
博文 23
码字总数 28541
作品 0
广州
私信 提问
【Spring Boot】27.spring cloud

简介 Spring Cloud是一个分布式的整体解决方案。Spring Cloud 为开发者提供了在分布式系统(配置管理,服务发现,熔断,路由,微代理,控制总线,一次性token,全局琐,leader选举,分布式s...

落花时节又逢卿
2018/12/28
1
0
服务注册发现、配置中心集一体的 Spring Cloud Consul

前面讲了 Eureka 和 Spring Cloud Config,今天介绍一个全能选手 「Consul」。它是 HashiCorp 公司推出,用于提供服务发现和服务配置的工具。用 go 语言开发,具有很好的可移植性。被 Spring...

风的姿态
08/28
0
0
spring-cloud项目学习与实践记录之——服务注册与发现

先简单介绍一下spring cloud简介: 本系列文章的背景:本系列文章是基于本人之前的一个完整的综合站点管理系统,采用新的spring cloud系统进行微服务化的一个演变过程。原系统是一个模块化的...

cavion
2018/07/14
27
0
Spring Cloud Alibaba迁移指南1:零代码从Eureka迁移到Nacos

本文探讨如何零代码将Eureka迁移到Nacos。 作者:得少,校对:周立。 Spring Cloud官方宣布Spring Cloud Netflix进入维护状态(详见Spring Cloud Netflix项目进入维护模式之我见 ),后续不再...

周立_ITMuch
01/25
3.5K
4
热门技术从零开始学Spring Cloud视频教程发布

使用技术 (1)spring boot,使用版本:1.5.8 (2)spring cloud ,使用版本:Dalston.SR4 (3)Netflix Eureka (4)Netflix Ribbon (5)Feign (6)Netflix Hystrix (7)Spring Clou Con...

小红牛
2018/08/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring使用ThreadPoolTaskExecutor自定义线程池及实现异步调用

多线程一直是工作或面试过程中的高频知识点,今天给大家分享一下使用 ThreadPoolTaskExecutor 来自定义线程池和实现异步调用多线程。 一、ThreadPoolTaskExecutor 本文采用 Executors 的工厂...

CREATE_17
今天
5
0
CSS盒子模型

CSS盒子模型 组成: content --> padding --> border --> margin 像现实生活中的快递: 物品 --> 填充物 --> 包装盒 --> 盒子与盒子之间的间距 content :width、height组成的 内容区域 padd......

studywin
今天
7
0
修复Win10下开始菜单、设置等系统软件无法打开的问题

因为各种各样的原因导致系统文件丢失、损坏、被修改,而造成win10的开始菜单、设置等系统软件无法打开的情况,可以尝试如下方法解决 此方法只在部分情况下有效,但值得一试 用Windows键+R打开...

locbytes
昨天
8
0
jquery 添加和删除节点

本文转载于:专业的前端网站➺jquery 添加和删除节点 // 增加一个三和一节点function addPanel() { // var newPanel = $('.my-panel').clone(true) var newPanel = $(".triple-panel-con......

前端老手
昨天
8
0
一、Django基础

一、web框架分类和wsgiref模块使用介绍 web框架的本质 socket服务端 与 浏览器的通信 socket服务端功能划分: 负责与浏览器收发消息(socket通信) --> wsgiref/uWsgi/gunicorn... 根据用户访问...

ZeroBit
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部