springcloud 之 配置中心服务 spring cloud config
开门见山,不做过多的陈述,简单说一下配置中心的作用:在我们的实际项目开发中,我们一般都是一个项目一套配置,就像我之前的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
以上是服务端配置中心的配置,接下来我们开始客户端的配置,客户端怎样获取服务端的配置呢?
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相关推荐
- 分布式配置中心:spring cloud config
分布式配置中心:spring cloud config 前言 Spring Cloud Config是Spring Cloud团队创建的一个全新项目,用来为分布式系统中的基础设施和微服务应用提供集 ...
- 基于Nacos配置中心实现Spring Cloud Gateway的动态路由管理
前面我们了解过了Sentinel 网关流量控制之Spring Cloud Gateway实战,今天带给大家是基于Nacos配置中心实现Spring Cloud Gateway的动态路由管理. 1.为什 ...
- 02.Apollo配置中心整合spring cloud zuul
一.前言 携程 Apollo 配置中心 学习笔记, Windows 系统搭建基于携程Apollo配置中心分布式模式, 在此基础上,介绍如何使用阿波罗整合zuul实现动态路由. 二.项目搭建 参考htt ...
- 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)(Finchley版本)...
转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f6-config/ 本文出自方志朋的博客 在上一篇文章讲述z ...
- 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)
转:https://blog.csdn.net/forezp/article/details/70037291 最新版本: 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spr ...
- SpringCloud: 分布式配置中心(Spring Cloud Config)
简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组件spring cloud config , ...
- Spring Cloud(九)高可用的分布式配置中心 Spring Cloud Config 集成 Eureka 服务
上一篇文章,讲了SpringCloudConfig 集成Git仓库,这一篇我们讲一下SpringCloudConfig 配和 Eureka 注册中心一起使用 在分布式系统中,由于服务数量巨多,为了方便 ...
- Java B2B2C o2o多用户商城 springcloud架构 (六)分布式配置中心(Spring Cloud Config)
一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组件spring cloud config ...
- 第六篇: 分布式配置中心(Spring Cloud Config)(Finchley版本)V2.0_dev
一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件. 在Spring Cloud中,有分布式配置中心组件spring cloud confi ...
最新文章
- 5月14日 游戏闯关,
- 关于使用jQuery时$(document).ready()方法失效问题
- 关于线程池ThreadPoolExecutor使用总结
- springcloud的简单使用_微服务架构:初识Spring Cloud
- mysql加入新的从节点怎么配置,Mysql 5.7从节点配置多线程主从复制的方法详解
- Android NDK升级17后编译提示找不到mips64el-linux-android-strip
- 逆向某某单车-iOS客户端
- 华为手机连不上adb解决方法
- python chardet模块,没有名为“chardet”的模块
- 软件开发成本评估怎么做?软件开发成本评估从哪些方面进行?
- VISA 通信command总结
- 对组件、模块、子系统、系统、框架、架构 定义浅析
- ubuntu配置全局系统代理
- java pointer_Java Pointer.pointerToCString方法代码示例
- python制作查询软件_Python制作快递查询工具
- 单例模式——解决MDI子窗体实例化的问题
- Clion设置背景图片
- 节卡JAKA机械臂培训笔记(偏入门)
- 设计理财产品推荐系统场景
- HCIE-Routing Switching V3.0模拟试题.docx