本篇和大家分享的是springcloud-config配置中心搭建,写到这里突然想起自己曾今开源过基于Redis发布订阅编写的一个配置中心,刚看了git星数有点少哈哈,这里顺势发个连接欢迎大侠们点赞:https://github.com/shenniubuxing3/IConfCenter

  • springcloud版本说明
  • config-server配置中心
  • config-client配置客户端
  • eureka注册中心实现配置高可用

springcloud版本说明

由于市面上其版本比较多,版本不一可能造成了读者尝试时版本问题,所以这里指明当前作者写文章时使用的cloud版本,springboot版本:

     <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0..RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

springcloud版本:

    <properties>
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.SR2</spring-cloud.version>
</properties>

config-server配置中心

config配置中心主要是用来获取要发布的配置文件信息,并开放接口被其他调用者使用,先上maven配置:

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

通常在程序入口处添加注解 @EnableConfigServer 然后我们还需要知道开放那些配置文件作为配置信息来源,因此需要在application.yml文件中配置如下信息:

 spring:
application:
name: config-server #springcloud-config默认采用application作为name
cloud:
config:
server:
native:
search-locations: file:///D:/my_study/study_java/springcloud_3/config-server/src/main/resources/config
profiles:
active: native
server:
port:

这里我使用本地的配置文件目录 src/main/resources/config 来提供配置文件,如果在windows上其实不用写file:///,不过官网还特别标注了windows上file后面要多一个 '/' 这里需要大家注意;这里我config文件夹下有两个配置文件,如下:

此刻我们最简单的配置服务就搭建好了,启动程序并访问如下地址:http://10.0.75.1:4020/config-server/conf1,conf0;值得注意的时候这里用 ',' 分割了下,在浏览器中得到如下两个配置文件合并后的信息:

可以去掉其中任何一个conf1或者conf0,得到的就是对应配置文件的信息,这里通过浏览器访问的路径规则是:http://xx.xx.xx/{application}/{profiles}/{label} label默认null

config-client配置客户端

同样先来看pom的config-client对应的配置,这里多了个web依赖因为我打算在api接口信息看配置效果

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

然后在Application入口处增加注解 @EnableDiscoveryClient 下面就是配置文件中的信息了,要注意的是这个版本config-client的config相关配置要放在名称为 bootstrap.properties 的文件中(这是默认的配置文件名),如下bootstrap.yml信息:

 spring:
cloud:
config:
name: config-server #application
profile: conf1,conf0 #profile 后来者覆盖,没有合并
label: #label
uri: http://10.0.75.1:4020

需要注意的是uri配置的是刚才上面我们访问的config-server地址,其他的几个配置对应刚才说的url规则

application.yml配置:

 spring:
application:
name: config-client
server:
port:

再来定义个api接口:

 @RestController
public class ConfigController { @Value("${shenniu.author}")
private String author; @Value("${shenniu.des}")
private String des; @GetMapping("/getPort")
public String getPort() {
return "作者:" + author +
"描述:" + des;
}
}

此时运行config-client,通过开放的api接口返回映射的配置信息如下:

eureka注册中心实现配置高可用

高可用通俗来讲就是部署多个服务,当某个挂掉的时候其他的顶上去,这里使用Eureka注册中心(后面可能会分享关于zk和consul);先创建个eureka-server项目并运行起来:

         <dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

在Application入口处添加 @EnableEurekaServer 注解启动eureka服务,这里我分别启动1020,1021,1022三个eureka服务端口,使其自身是高可用的,相关配置:

 spring:
application:
name: eureka
server:
port:
eureka:
instance:
appname: ${spring.application.name}
client:
# register-with-eureka: false #开启自动注册到eureka中心,高可用
# fetch-registry: false
service-url:
defaultZone: http://localhost:1020/eureka/,http://localhost:1021/eureka/,http://localhost:1022/eureka/
server:
eviction-interval-timer-in-ms: #检测失效信息的时间
enable-self-preservation: false #关闭自我保护
use-read-only-response-cache: false

下面需要分别改造下config-server和config-client的配置,可以遵循如下信息:

config-server

pom增加:

         <dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

application.yml增加:

 eureka:
client:
service-url:
defaultZone: http://localhost:1020/eureka/,http://localhost:1021/eureka/,http://localhost:1022/eureka/
instance:
appname: ${spring.application.name}
prefer-ip-address: true

config-client

pom增加:

         <dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

bootstrap.yml改造:

 spring:
cloud:
config:
name: config-server #application
profile: conf1,conf0 #profile 后来者覆盖,没有合并
label: #label
# uri: http://10.0.75.1:4020
discovery:
enabled: true
service-id: CONFIG-SERVER
eureka:
client:
service-url:
defaultZone: http://localhost:1020/eureka/,http://localhost:1021/eureka/,http://localhost:1022/eureka/
instance:
appname: ${spring.application.name}
prefer-ip-address: true

如果可以吧config-server多开几个端口,都注册到eureka中心,成功后如下信息:

同样访问api接口时得到如下获取配置成功信息

springcloud之config配置中心-Finchley.SR2版的更多相关文章

  1. SpringCloud之Config配置中心+BUS消息总线原理及其配置

    一.配置中心作用 在常规的开发中,每个微服务都包含代码和配置.其配置包含服务配置.各类开关和业务配置.如果系统结构中的微服务节点较少,那么常规的代码+配置的开发方式足以解决问题.当系统逐步迭代,其微服 ...

  2. springcloud之服务注册与发现(zookeeper注册中心)-Finchley.SR2版

    新年第一篇博文,接着和大家分享springcloud相关内容:本次主要内容是使用cloud结合zookeeper作为注册中心来搭建服务调用,前面几篇文章有涉及到另外的eureka作为注册中心,有兴趣的 ...

  3. SpringCloud系列——Config 配置中心

    前言 Spring Cloud Config为分布式系统中的外部化配置提供了服务器端和客户端支持.有了配置服务器,您就有了一个中心位置来管理跨所有环境的应用程序的外部属性.本文记录实现一个配置中心.客 ...

  4. Spring-Cloud之Config配置中心-7

    一.我们前面基本上都是讲解的Spring Cloud Netflix的组件,下面我们会重点说Spring Cloud Config分布式配置中心.为什么需要这个组件来管理配置呢?在分布式应用开发过程中 ...

  5. springCloud系列 Config配置中心

    1.config服务的部署 2.yum文件的格式 大小写敏感 使用缩进表示层级关系 缩进时不允许使用Tab键,只允许使用空格. 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可 3.热部署 4.配 ...

  6. SpringBoot(三) - Ribbon客户端负载均衡,Zuul网关,Config配置中心

    1.Ribbon客户端负载均衡 1.1 依赖 1.2 配置信息 # feign默认加载了ribbon负载均衡,默认负载均衡机制是:轮询 # 负载均衡机制是添加在消费端(客户端)的,如果改为随机,指定服 ...

  7. Spring Cloud(七):配置中心(Git 版与动态刷新)【Finchley 版】

    Spring Cloud(七):配置中心(Git 版与动态刷新)[Finchley 版]  发表于 2018-04-19 |  更新于 2018-04-24 |  Spring Cloud Confi ...

  8. [转]springcloud(九):配置中心和消息总线(配置中心终结版)

    https://www.cnblogs.com/ityouknow/p/6931958.html springcloud(九):配置中心和消息总线(配置中心终结版) 我们在springcloud(七) ...

  9. 微服务SpringCloud之Spring Cloud Config配置中心Git

    微服务以单个接口为颗粒度,一个接口可能就是一个项目,如果每个项目都包含一个配置文件,一个系统可能有几十或上百个小项目组成,那配置文件也会有好多,对后续修改维护也是比较麻烦,就和前面的服务注册一样,服务 ...

随机推荐

  1. Prometheus监控⼊⻔简介

    文档目录: • prometheus是什么?• prometheus能为我们带来些什么• prometheus对于运维的要求• prometheus多图效果展示 1) Prometheus是什么pro ...

  2. CopyOnWriteArraySet简介

    基于CopyOnWriteArrayList实现,线程安全无需集合. add调用的是CopyOnWriteArraylist的addIfAbsent方法. CopyOnWriteArraySet每次a ...

  3. Go性能优化小结

    1 内存优化 1.1 小对象合并成结构体一次分配,减少内存分配次数 做过C/C++的同学可能知道,小对象在堆上频繁地申请释放,会造成内存碎片(有的叫空洞),导致分配大的对象时无法申请到连续的内存空间, ...

  4. C++ 文件流的方式操作文件(一个简单的写入,读取)

    新手学习c++哈,归纳的写了一下以 C++ 的方式写入读取文件,读文件到控制台,并加了行号.博客记录主要为了备忘.当然 ^_^ 喜欢同学的话可以拿走代码直接用.转帖注明出处哈.欢迎讨论,我一直认为:知 ...

  5. BZOJ_1975_[Sdoi2010]魔法猪学院_A*

    BZOJ_1975_[Sdoi2010]魔法猪学院_A* Description iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPi ...

  6. ES6知识整理(1)--let和const命令

    最近准备在业余空闲时间里一边学习ES6,一边整理相关知识.只有整理过的学习才是有效的学习.也就是学习之后要使用和整理成文,才是正在的学到了... 那么现在开始 LINK START!(首先是第一讲,前 ...

  7. 数字类型——python3

    今天我为各位小伙伴准备了python3中数字类型,希望能够帮助到你们! Python 数字数据类型用于存储数值. 数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间. 以下 ...

  8. mysql服务设置远程连接 解决1251 client does not support ..问题

    在docker里面创建mysql容器后设置的密码在远程主机连接时候出现错误: 一.如果是在docker里面安装的mysql镜像则需要先进入mysql里面:参考上一篇:https://www.cnblo ...

  9. Spring 系列之Spring常用注解总结

    传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.实物,这么做有两个缺点: 1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文 ...

  10. Java ArrayList正确循环添加删除元素方法及分析

    在阿里巴巴Java开发手册中,有这样一条规定: 但是手册中并没有给出具体原因,本文就来深入分析一下该规定背后的思考. 一.foreach循环 foreach循环(Foreach loop)是计算机编程 ...