开门见山,不做过多的陈述,简单说一下配置中心的作用:在我们的实际项目开发中,我们一般都是一个项目一套配置,就像我之前的springboot项目,每个项目下都有一套resources/application.properties,里面都配置了我们需要的mysql连接、redis连接,kafka连接等,也就是说我们如果有n个项目,且如果都需要使用mysql的话,那么我们就有n个重复的mysql配置,而且最致命的是如果我们的mysql地址发生了变化,那么我们就得手动到每个项目下更改mysql的连接配置,改到你手软为止;别惊讶,我之前就是这么过来的(当时还只有七个服务),所以我毅然决然的开始了配置中心化这条道路......

这篇文章会简单的实现一个基于git(我用的时gitlib,公司搭建的一个git服务)的配置中心化的服务,满足基本需求,后面的文章会继续谈到更深入的功能点。

1. 首先,打开gitlib,创建一个仓库,我这里创建了一个名为x2-config-repo的项目,并且创建了三个配置文件,对应我们以后的开发(dev)、测试(test)、生产环境(prod).

2.创建一个springboot项目(xsignal2-config),这是配置中心server端,通过server端连接gitlib读取配置信息

依赖pom.xml

<!--eureka client-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka</artifactId>
    <version>1.4.0.RELEASE</version>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>runtime</scope>
</dependency>

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

核心依赖:spring-cloud-config-server

2.打开application-dev.properties,加入以下内容:

#端口
server.port=8765
#实例名
spring.application.name=xsignal2-config
#注册中心
eureka.server.host=10.0.2.24
eureka.server.port=8761
eureka.client.service-url.defaultZone=http://${eureka.server.host}:${eureka.server.port}/eureka/

#git
# 配置git仓库的地址
spring.cloud.config.server.git.uri=http://xxx.com.cn/zhang/x2-config-repo.git
# git仓库地址下的相对地址,可以配置多个,用,分割
spring.cloud.config.server.git.search-paths=x2-config-repo
# git仓库的账号
spring.cloud.config.server.git.username=
# git仓库的密码
spring.cloud.config.server.git.password=

3.打开启动类加入相关注解:@EnableConfigServer

ok,配置服务准备就绪,开始测试吧;首先启动我们的注册中心eureka server(在此我沿用之前的discover-server项目),然后启动配置中心;查看效果如下:

我们的配置中心服务已成功加入到注册中心,接下来验证是否能获取到gitlib中的配置信息。

看到如上信息,说明我们已经成功访问到gitlib中的配置信息;我们也可以直接访问配置文件通过如下地址:

仓库中的配置文件会被转换成web接口,访问可以参照以下的规则:

  • /{application}/{profile}[/{label}]
  • /{application}-{profile}.yml
  • /{label}/{application}-{profile}.yml
  • /{application}-{profile}.properties
  • /{label}/{application}-{profile}.properties
以x2config-dev.properties为例,application=x2config,profile=dev,client会根据填写的参数来选择读取对应的配置。

以上是服务端配置中心的配置,接下来我们开始客户端的配置,客户端怎样获取服务端的配置呢?

1.基于之前的demo-springboot项目,我们将其作为一个客户端

打开pom.xml,加入相关依赖

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

2.打开bootstrap.properties配置文件(注:以下配置一定要写在bootstrap中,因为bootstrap会优先于application.properties加载)

#client config
#对应{application}部分
spring.cloud.config.name=x2config
#对应{profile}部分
spring.cloud.config.profile=dev
#配置中心url
#spring.cloud.config.uri=http://localhost:8765/
#开启Config服务发现支持
spring.cloud.config.discovery.enabled=true
#配置中心服务实例
spring.cloud.config.discovery.service-id=xsignal2-config
#对应git的分支
spring.cloud.config.label=master

#注册中心
eureka.server.host=10.0.2.24
eureka.server.port=8761
eureka.client.service-url.defaultZone=http://${eureka.server.host}:${eureka.server.port}/eureka/
#开启eureka client健康检查
eureka.client.healthcheck=true
# 续约到期时间(默认90秒)
eureka.instance.lease-expiration-duration-in-seconds=30
# 续约更新时间间隔(默认30秒)
eureka.instance.lease-renewal-interval-in-seconds=10

配置的相关说明:因为我们已经通过注册中心注册了实例,所以以上配置中我们开启了config的服务发现支持(spring.cloud.config.discovery.enabled=true,spring.cloud.config.discovery.service-id=xsignal2-config)可以直接通过实例名称去查找配置中心服务,如果没有开启注册中心(eureka server),那么也可以通过url配置(#spring.cloud.config.uri=http://localhost:8765/)配置中心地址。

2.application-dev.properties配置

#端口
server.port=8889
#实例名
spring.application.name=demo-springboot

#feign read timeout(10s)
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=10000
#feign read timout disable
#hystrix.command.default.execution.timeout.enabled=false

3.编写测试类

/**
 * @author xiaofeng
 * @version V1.0
 * @title: TestController.java
 * @package: com.example.demo.controller
 * @description: TODO
 * @date 2018/4/3 0003 下午 2:10
 */
@RefreshScope
@RestController
@RequestMapping(value = "/test")
public class TestController {@RequestMapping(value = "/info")public String info(@RequestParam(value = "msg") String msg) {return "welcome to demo-springboot: " + msg;
    }@Value("${kafka.broker.host}")String appName;

    @RequestMapping(value = "/config")public String configValue() {return appName;
    }
}

如上,我们可以通过@Value的方式获取配置信息(也可以通过Enviroment env; env.getpropery("xxx")的方式获取)

4.启动demo-springboot,访问/test/config 查看效果

很明显,我们已经拿到了gitlib中配置信息,至此,我们的基本配置已完成,自己去实践吧,相信你会发现存在的其它问题,比如:实时刷新,动态更新等!你的疑惑我们将在下一章为大家揭晓!

springcloud 之 配置中心服务 spring cloud config相关推荐

  1. 分布式配置中心:spring cloud config

    分布式配置中心:spring cloud config 前言 ​ Spring Cloud Config是Spring Cloud团队创建的一个全新项目,用来为分布式系统中的基础设施和微服务应用提供集 ...

  2. 基于Nacos配置中心实现Spring Cloud Gateway的动态路由管理

    前面我们了解过了Sentinel 网关流量控制之Spring Cloud Gateway实战,今天带给大家是基于Nacos配置中心实现Spring Cloud Gateway的动态路由管理. 1.为什 ...

  3. 02.Apollo配置中心整合spring cloud zuul

    一.前言 携程 Apollo 配置中心 学习笔记, Windows 系统搭建基于携程Apollo配置中心分布式模式, 在此基础上,介绍如何使用阿波罗整合zuul实现动态路由. 二.项目搭建 参考htt ...

  4. 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)(Finchley版本)...

    转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f6-config/ 本文出自方志朋的博客 在上一篇文章讲述z ...

  5. 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)

    转:https://blog.csdn.net/forezp/article/details/70037291 最新版本: 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spr ...

  6. SpringCloud: 分布式配置中心(Spring Cloud Config)

    简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组件spring cloud config , ...

  7. Spring Cloud(九)高可用的分布式配置中心 Spring Cloud Config 集成 Eureka 服务

    上一篇文章,讲了SpringCloudConfig 集成Git仓库,这一篇我们讲一下SpringCloudConfig 配和 Eureka 注册中心一起使用 在分布式系统中,由于服务数量巨多,为了方便 ...

  8. Java B2B2C o2o多用户商城 springcloud架构 (六)分布式配置中心(Spring Cloud Config)

    一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组件spring cloud config ...

  9. 第六篇: 分布式配置中心(Spring Cloud Config)(Finchley版本)V2.0_dev

    一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件. 在Spring Cloud中,有分布式配置中心组件spring cloud confi ...

最新文章

  1. 5月14日 游戏闯关,
  2. 关于使用jQuery时$(document).ready()方法失效问题
  3. 关于线程池ThreadPoolExecutor使用总结
  4. springcloud的简单使用_微服务架构:初识Spring Cloud
  5. mysql加入新的从节点怎么配置,Mysql 5.7从节点配置多线程主从复制的方法详解
  6. Android NDK升级17后编译提示找不到mips64el-linux-android-strip
  7. 逆向某某单车-iOS客户端
  8. 华为手机连不上adb解决方法
  9. python chardet模块,没有名为“chardet”的模块
  10. 软件开发成本评估怎么做?软件开发成本评估从哪些方面进行?
  11. VISA 通信command总结
  12. 对组件、模块、子系统、系统、框架、架构 定义浅析
  13. ubuntu配置全局系统代理
  14. java pointer_Java Pointer.pointerToCString方法代码示例
  15. python制作查询软件_Python制作快递查询工具
  16. 单例模式——解决MDI子窗体实例化的问题
  17. Clion设置背景图片
  18. 节卡JAKA机械臂培训笔记(偏入门)
  19. 设计理财产品推荐系统场景
  20. HCIE-Routing Switching V3.0模拟试题.docx

热门文章

  1. mysql 修复错误连接_mysql 无法连接问题的定位和修复过程分享
  2. java 扫描所有子类_java获取全部子类或接口的全部实现
  3. 走线画直线_画画教程,只用1支铅笔,教你画一幅毛绒小熊
  4. ubuntu16下vue-cli安装
  5. 使用BaseAdapter实现复杂的ListView
  6. PHP算法学习(6) 单向链表 实现栈
  7. [Oracle运维工程师手记] 如何从trace 文件,判断是否执行了并行
  8. 嵌入式Linux系统运行流程图
  9. Android多媒体学习三:实现自己的Camera
  10. C#系列五《程序的分支》