传送门:SpringCloud版本Hoxton SR5 --- 第一讲:认识 先看SpringCloud Config 可以完成的功能,或者说他在项目中的定位和作用。

SpringCloud config也可以使用Eureka配置集群高可用.

建议将eureka注册中心 与 springcloud config服务端分开部署。

在上面建议的前提下,运行的时候,启动是有顺序的:

单机版:

1. 当eureka使用了springcloud config客户端,必须先启动springcloud config服务端,再启动eureka服务端,再启动其他微服务。

2. 当eureka没有使用springcloud config客户端,springcloud config服务端与eureka服务端没有先后顺序,但是其他微服务必须最后启动。

集群版:

如果是集群的话,eureka服务端一定使用不到springcloud config组件。

这时候,eureka集群 与 springcloud config集群服务端,没有启动顺序。但是其他微服务需要在上面两个集群启动后在启动。

先来单机版:

===================================== SpringCloud config 单机版 =======================================

服务端: 单机模式没必要注册到Eureka,所以我将Eureka的配置删掉了,不过也可以与之整合,看需求。

依赖:<!-- springcloud config 服务端依赖 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-server</artifactId></dependency>
配置:
#################################################### 基础公共配置 #######################################################
server:port: 7500  # 配置项目访问端口#################################################### config 配置 #######################################################
spring:application:name: config-servercloud:config:server:git:uri: https://gitee.com/w_wangqinmin/config.git # http格式的仓库地址,不管是GitHub,码云都是这样的。亲自测试,官网也是这么写的。search-paths: eureka,item,login,order,zuul  # 匹配搜索(有些配置文件放在git仓库的自定义目录之下,直接访问不到,这里就是自动匹配,比较懒的人可以直接配: '*'  不过不建议)。git仓库,我们可能建不同的目录,比如:myone、mytwo、mythree 这些文件夹。当mythree里面有一个要使用的配置文件时,前面就配置myt*就可以自动找到配置文件了。clone-on-start: true  # 是否启动的时候就clone远程仓库到本地服务端(相当于懒加载)。意思就是当该微服务启动的时候,就将git仓库里的代码clone下来。如果设位置false,就表示用的时候再去git仓库clone。skipSslValidation: true #禁用配置服务器对Git服务器的SSL证书的验证 (默认false)timeout: 5 # 配置服务器将等待获取HTTP连接的时间(默认 5秒,以秒为单位)force-pull: true # 当本地仓库clone的副本出问题的时候,从远程存储库强制拉取(默认false)deleteUntrackedBranches: false # 为使本地仓库与远程仓库一致,强制将Spring Cloud Config本地服务端未跟踪的分支删除。(默认false)default-label: master # 访问分支force-pull: true # 与服务器本地副本冲突的情况下,从远程存储库强制拉出
启动类:
package com.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;/*** @author: wangqinmin* @date : 2020/6/16* @description: 仰天大笑出门去,我辈岂是蓬蒿人*/
@SpringBootApplication
@EnableConfigServer
public class ConfigApplication {public static void main(String[] args) {SpringApplication.run(ConfigApplication.class);}
}

这里有几点说明:

1. 上面配置的git远程仓库:就是存储配置文件的地方。

2. 当这个项目启动后,可以直接使用 http://localhost:7500/配置文件名 打开。

3. git仓库里的配置文件名,这个取名字,也是有规则的,不能随便乱取。

这是在官网copy的规则:/ {application} / {profile} [/ {label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties

解释一下:

当springcloud config服务端启动好了,并且git仓库准备好了,且有配置文件后。直接访问 http://localhost:7500/配置文件名

如果胡乱给配置文件取名字,而且不知道访问规则, 可能你得到的就是404。 下面给访问例子:

每一个访问地址对应上面官网copy的一个规则。Login-Server.yml就是git仓库中配置文件的文件名。

http://localhost:7500/Login-Server/dev/master    master可以不加,通常情况配置文件都在git的master目录(默认访问master)

http://localhost:7500/Login-Server-dev.yml         有没有发现,我的配置文件名是 Login-Server.yml。 但是访问加了 -dev

http://localhost:7500/master/Login-Server-dev.yml   默认访问master所以可以访问:http://localhost:7500/Login-Server-dev.yml

http://localhost:7500/Login-Server-dev.properties

http://localhost:7500/master/Login-Server-dev.properties    这里也是一样的,默认master。

看了上面的规则一定有一个疑问,就是-dev是哪里来的,dev需要在配置文件里面配置,就是对环境的选择。

给一个git仓库Login-Server1.yml的文件做参考学习: 码云git仓库 Login-Server1.yml文件配置, 下面是解释git仓库配置文件中某些配置作用:

---    # 不同环境配置用 三个减号 分割。# (注释用 #)spring:profiles: dev  # 本地环境(Initialization)  ### 这里就是定义的dev,上面访问地址加的dev,就表示访问这个配置文件中的这个配置。如果这里是自定义的 test,那么访问地址后面就将 -dev 换成  -test上面3行,每一行都是对当前行配置的解释。

客户端:就是我们的微服务端,使用起来非常简单。只需2步:

1.引入依赖

2. 增加配置文件bootstrap.yml  ( 放在resource目录下,不是把application.yml删除,而是新增一个bootstrap.yml文件)

依赖:<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency>
##  bootstrap.yml 文件里面的配置。
spring:cloud:config:name: Login-Server #这是我们要读取的配置文件名 对应获取规则的{application}profile: local   #这个是要获取的环境 对应的便是{profile}label: master #这个就是获取的节点 对应的是{label}uri: http://localhost:7777/ #单机版, 指定Spring cloud config服务端的地址,就是让这个服务去git仓库中获取所需的配置数据。

对于客户端增加的bootstrap.yml的配置文件,我要说明几点:

1.  文件名必须是 bootstrap.yml 。他和application.yml在同一个目录下,并且它的级别比application.yml级别高。就是说,bootstrap.yml中配置的属性优先使用。 比如:application.yml中配置了 server.port = 6060 ,bootstrap.yml读取git仓库中的 server.port = 5050, 那么程序运行起来后,一定是5050端口。如果远程读取或者本地读取不成功,就是使用本地application.yml的配置文件。

2. boostrap.yml文件, 默认情况下它们不能被本地配置。解释:就是说当你打开idea 或者 eclipse ,你需要创建bootstrap.yml这个文件。但是文件里面需要配置的是:去git 或者 本地配置仓库 获取配置数据的地址,而不是直接在里面进行端口、eureka等等的配置,注意这里面配置的只是获取配置文件的地址。

3. boostrap.yml  中的:

name,就是对应git仓库中配置文件的名称。

profile就是对应git仓库Login-Server.yml配置文件内部的环境。

label 就是对应配置文件在git仓库的哪个目录。

单机版的SpringCloud config就到这里了。引入依赖、添加bootstrap.yml文件。直接就完成了对SpringCloud Config客户端的整合,没有其他的配置了。也不需要在启动类上加注解。

===================================== SpringCloud config 集群版 =====================================

通常情况下,小项目是不需要集群的,如果使用集群一定是很大的项目,主要做高可用。

如果是这样的话,Eureka也一定是集群。所以我下面的配置,也是用了  Eureak集群。

服务端:

相比较springcloud的单机模式,添加了对Eureak的依赖:<!-- springcloud config 服务端依赖 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-server</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>

对于集群版来说下面的配置:

端口需要改改、instance-id(注册到Eureka的服务名)需要改改不能重复、配置的ip地址修改成自己的、search-paths根据自己git仓库的文件名改改,可以直接改成   ’*‘  ,就是匹配所有,配置中也有解释。

其他都是一样的。

#################################################### 基础公共配置 #######################################################
server:port: 7501  # 配置项目访问端口#################################################### eureka客户端配置 #######################################################
eureka: # 注意下面的时间设置,是在网络不稳定的时候生效,但是如果是手动关闭eureka的客户端实例,会直接给eureka服务端发送信息,直接关闭在eureka中注册的服务client:serviceUrl:# defaultZone: http://wangqinmin.com:6001/eureka  #集群配置   我建议使用这种,但是服务端的配置中,需要打开自我注册,默认也是打开的。defaultZone: http://wangqinmin.com:6001/eureka,http://127.0.0.1:6002/eureka,http://localhost:6003/eureka  #集群配置# 将本项目的客服端注册到所有的服务端中,为了防止服务端不注册自己的情况#(一般情况下不会出现这种问题,就是怕有些人不懂eureka,胡乱配置集群服务端,所以这是一个最稳妥的方式,如果就按照我服务端的配置来,就不会出现这样的问题。)# 其实会出问题的原因就是:手动的把自我注册的配置关闭了。# 这种配置还有一个缺点,没有连上的服务会不停的在日志中报错instance:instance-id: client-config-1 #此实例注册到eureka服务端的唯一的实例ID(也就是给当前项目指定一个ID,当当前项目运行起来后,就会将这个ID注册到eureka的服务端)prefer-ip-address: true #是否显示IP地址leaseRenewalIntervalInSeconds: 30 #eureka客户需要多长时间发送心跳给eureka服务器,表明它仍然活着,默认为30 秒 (与下面配置的单位都是秒)leaseExpirationDurationInSeconds: 90 #Eureka服务器在接收到实例的最后一次发出的心跳后,需要等待多久才可以将此实例删除,默认为90秒#################################################### config 配置 #######################################################
spring:application:name: cluster-configcloud:config:server:git:uri: https://gitee.com/w_wangqinmin/config.git # http格式的仓库地址,不管是GitHub,码云都是这样的。亲自测试,官网也是这么写的。search-paths: eureka,item,login,order,zuul  # 匹配搜索(有些配置文件放在git仓库的自定义目录之下,直接访问不到,这里就是自动匹配,比较懒的人可以直接配: '*'  不过不建议)。git仓库,我们可能建不同的目录,比如:myone、mytwo、mythree 这些文件夹。当mythree里面有一个要使用的配置文件时,前面就配置myt*就可以自动找到配置文件了。# search-paths: myone,mytwo,myt*  # 匹配搜索(有些配置文件放在git仓库的自定义目录之下,直接访问不到,这里就是自动匹配,比较懒的人可以直接配: '*'  不过不建议)。git仓库,我们可能建不同的目录,比如:myone、mytwo、mythree 这些文件夹。当mythree里面有一个要使用的配置文件时,前面就配置myt*就可以自动找到配置文件了。clone-on-start: true  # 是否启动的时候就clone远程仓库到本地服务端(相当于懒加载)。意思就是当该微服务启动的时候,就将git仓库里的代码clone下来。如果设位置false,就表示用的时候再去git仓库clone。skipSslValidation: true #禁用配置服务器对Git服务器的SSL证书的验证 (默认false)timeout: 5 # 配置服务器将等待获取HTTP连接的时间(默认 5秒,以秒为单位)force-pull: true # 当本地仓库clone的副本出问题的时候,从远程存储库强制拉取(默认false)deleteUntrackedBranches: false # 为使本地仓库与远程仓库一致,强制将Spring Cloud Config本地服务端未跟踪的分支删除。(默认false)default-label: master # 访问分支force-pull: true # 与服务器本地副本冲突的情况下,从远程存储库强制拉出

启动类: 添加了对Eureak整合的注解

package com.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;/*** @author: wangqinmin* @date : 2020/6/16* @description: 仰天大笑出门去,我辈岂是蓬蒿人*/
@SpringBootApplication
@EnableConfigServer
@EnableEurekaClient
public class Config7501Application {public static void main(String[] args) {SpringApplication.run(Config7501Application.class);}
}

服务端: 微服务端其他要用组件自己加,集群版的Springcloud Config只需要这两个依赖。

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

在resource目录下,增加一个 bootstrap.yml 的配置文件

spring:cloud:config:name: Login-Server #这是我们要读取的配置文件名 对应获取规则的{application}profile: local   #这个是要获取的环境 对应的便是{profile}label: master #这个就是获取的节点 对应的是{label}discovery: ###  下面是集群版的配置enabled: true # 打开对Eureka服务注册中心的支持service-id: cluster-config # 集群版 配置config在Eureka上注册的应用名称eureka: # 注意下面的时间设置,是在网络不稳定的时候生效,但是如果是手动关闭eureka的客户端实例,会直接给eureka服务端发送信息,直接关闭在eureka中注册的服务client:serviceUrl:defaultZone: http://wangqinmin.com:6001/eureka,http://127.0.0.1:6002/eureka,http://localhost:6003/eureka  #集群配置

上面的配置需要说明一下:

这里剔除了单机版的对 uri 的配置,因为springcloud config集群整合Eureka之后,所有的SpringCloud Config注册到了Eureak的集群上,所以访问的话,直接访问Eureka注册后的应用名称就好了。就不需要单独的去访问某一个SpringCloud config的服务端了。

并且将Eureka的集群访问地址,配置在bootstra.yml的配置文件中。

这样集群版的SpringCloud Config就好了。

如果不需要修改代码里的属性,上面的springcloud config直接使用就够了。

如果需要修改代码里注入的属性,可以参考下面的整合 springcloud bus + actuator。


上面虽然把springcloud config服务端、客户端的配置都弄好了,但是要实现动态的修改配置,并应用到已经启动好的微服务上,还需要借助: springcloud bus + actuator组件:

所以,需要springcloud config动态配置功能的微服务,还需要以下步骤:

添加依赖:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!-- RabbitMQ 消息总线依赖 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bus-amqp</artifactId></dependency>
添加配置:
# actuator组件监听:
management:endpoints:web:exposure:include: '*'  # 暴露所有端口, 单独开项目HystrixDashBoard,查看本微服务调用情况。#        include: hystrix.stream  # 暴露所有端口, 单独开项目HystrixDashBoard,查看本微服务调用情况。endpoint:health:show-details: always# bus整合mq的mq连接配置
spring:rabbitmq:host: 47.96.100.61port: 5673  # 默认是5672,这里是我自己修改的。username: adminpassword: admin

rabbitmq的linux安装传送门:docker快速安装rabbitmq  ,当然如果不会安装docker的话:Linux CentOS7.2安装Docker

基本配置算是做好了。

还需要指定哪些地方,使用springcloud config的动态配置功能,因为我虽然修改了配置,但是不是项目每个地方都需要修改吧,所以需要修改的地方,要提前在该类上加上 @RefreshScope注解,类似:

@RestController
@RequestMapping("/login")
@RefreshScope
public class LoginController {@Value("${month}")private String month; // 这个就是我再git仓库中配置的一个属性,修改的也是git仓库的这个属性,然后测试在微服务运行的前提下,看看这个属性是否动态修改了,测试就自己测了,不贴具体步骤了。
}

然后:必须post请求调用,http://localhost:8080/actuator/bus-refresh 用idea的httpclient/postman/其他 看自己的习惯。
注意这里的 localhost:8080 是任意一个使用springcloud config客户端 + bus + actuator的微服务 的ip和端口,都是可以的。

到这里就真正的结束了,具体怎么测试,就不写了,功能已经完成,测试就自己慢慢测吧。

SpringCloud版本Hoxton SR5 --- 第七讲:SpringCloud Config 分布式配置中心+整合bus、rabbitmq、actuator相关推荐

  1. SpringCloud版本Hoxton SR5 --- 第八讲:Sleuth 分布式链路跟踪 整合Zipkin + Elasticsearch持久化

    传送门:SpringCloud版本Hoxton SR5 --- 第一讲:认识 先看Sleuth.Zipkin.Elasticsearch 可以完成的功能,或者说他在项目中的定位和作用. Sleuth比 ...

  2. SpringCloud版本Hoxton SR5 --- 第四讲:Hystrix 熔断、限流(线程)、降级

    传送门:SpringCloud版本Hoxton SR5 --- 第一讲:认识 先看Hystrix 可以完成的功能,或者说他在项目中的定位和作用. 上篇文章主要讲:功能和作用都是用大白话,主要是通俗易懂 ...

  3. SpringCloud版本Hoxton SR5 --- 第一讲:认识

    什么是SpringCloud ?我用好理解的方式作比喻: 这里我们拿京东的网站做解释,京东不一定这么搞得,但是思想是一致的.首先SpringCloud一种微服务架构的实现:首先京东支持14亿人访问,这 ...

  4. SpringCloud版本Hoxton SR5 --- 第三讲:Ribbon 、Ribbon与Feign配合使用

    传送门:SpringCloud版本Hoxton SR5 --- 第一讲:认识 先看Ribbon.Fegin可以完成的功能,或者说他在项目中的定位和作用. 上篇文章主要讲:功能和作用都是用大白话,主要是 ...

  5. SpringCloud微服务架构,Config 分布式配置中心,Bus 消息总线, Stream 消息驱动,Sleuth+Zipkin 链路追踪

    Config分布式配置中心 Config 概述 概述 • Spring Cloud Config 解决了在分布式场景下多环境配置文件的管理和维护. • 好处: • 集中管理配置文件 • 不同环境不同配 ...

  6. Spring Cloud入门-Config分布式配置中心(Hoxton版本)

    文章目录 Spring Cloud入门系列汇总 摘要 Spring Cloud Config 简介 在Git仓库中准备配置信息 配置仓库目录结构 master分支下的配置信息 dev分支下的配置信息 ...

  7. springcloud config 分布式配置中心

    一.介绍 1.场景: 微服务系统中,系统多.实例多,如果每个系统都有自己一套配置加载.维护的机制,会导致在生产过程中因为配置问题引发的不必要的沟通成本.故障风险.需要采用分布式配置中心统一管理.统一实 ...

  8. SpringCloud学习(十八):Config分布式配置中心的介绍与搭建

    目录 一.概述 1.分布式系统面临的配置问题 2. Config配置中心是什么 3.Spring Config能做什么 二.Config总控中心配置与测试 1.在Gitee上新建仓库 2.本地硬盘目录 ...

  9. SpringCloud Config分布式配置中心

    目录 一.概述 二.Config服务端配置与测试 配置读取规则 三.Config客户端配置与测试 bootstrasp.yml 四.Config客户端之动态刷新 一.概述 官网:Spring Clou ...

最新文章

  1. Python中局部变量和全局变量的详解
  2. python 单例模式的四种创建方式
  3. xsd java引用_web.xml文件的 xsd引用(或dtd引用)学习
  4. PCL已有点类型介绍和增加自定义的点类型
  5. 有关logistic(sigmoid)函数回归
  6. 从n个数中随机选取m个
  7. 20155204 2016-2017-2 《Java程序设计》第8周学习总结
  8. 10个 IDEA 插件来解放你的双手
  9. mongodb 去重查询 Java,mongodb篇二:mongodb克隆远程数据库,去重查询的命令及对应java语句...
  10. LDA主题模型(算法详解)
  11. opencv codebook学习
  12. 图解 React 的 diff 算法:核心就两个字 —— 复用
  13. oracle允许远程访问
  14. 【学习OpenCV4】进度条实现总结
  15. 什么是rootkit
  16. 基于Visual Studio 2003/2005的Office插件开发FAQ
  17. Round Robin算法的简单C#实现
  18. 石英晶体谐振器的应用指南
  19. 成都java薪资待遇怎么样?还值得学习吗?
  20. 中学生护眼台灯哪个牌子好?精选教育部入围护眼照明品牌

热门文章

  1. SLA,SLO和SLI工程师指南
  2. 嵌入式入门学习笔记1:资料收集
  3. protobuf官方文档学习
  4. 【解决方案】医院医疗安防视频监控系统搭建及集成统一管理方案介绍
  5. 人人憎恨的大数据杀熟你了解吗? 大数据杀熟”是否真的存在?
  6. C++ qt实现打开关闭状态按钮
  7. Redis学习之incr命令
  8. mysq coun(*)时为啥这么慢
  9. Docker的镜像制作与整套项目一键打包部署
  10. 微信小程序、微信小游戏作品汇总合集,各种好玩的小程序