在微服务中,配置文件一旦出现问题,则需要重新打包部署,若是一个服务出现问题处理起来不是很麻烦,但是如果很多服务都出现了问题,则需要浪费大量时间,基于这个问题,Spring Cloud提供了分布式配置中心组件spring cloud config,接下来,我们看一下,可以怎样使用吧

一. git配置文件

1. 配置文件路径及内容(git地址)

客户端配置文件git地址

二. 配置中心

1. 创建服务端

右键点击父项目,点击new,选择module),再选择maven,然后点击next
出现:

填写artifactid,然后点击next,最后点击finish

1.1 pom依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>study-springcloudframework</artifactId><groupId>com.lzr</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>study-config-server</artifactId><name>配置服务器</name><description>study-config-server</description><dependencies><!-- 配置中心服务 --><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></dependencies></project>

1.2 application.yml配置

## 服务器端口
server:port: 4111
spring:application:## 服务名name: study-config-servercloud:config:## 开启允许配置覆盖(默认开启)allow-override: true## 配置仓库的分支label: master## 配置git仓库地址server:git:## 配置git仓库地址uri: https://github.com/liuzhengrun/study_config_file## 配置仓库路径(文件夹路径)search-paths: studyconfigclient## 访问git仓库的用户名(没有就不填)username:## 访问git仓库的用户密码(没有就不填)passphrase:
## eureka
eureka:instance:## eureka主机名,会在控制页面中显示hostname: localhostprefer-ip-address: true## 心跳检测,检测与持续时间## 发送心跳间隔时间 单位秒 (测试的时候设置小一点,让eureka服务端及时踢出该服务)lease-renewal-interval-in-seconds: 10## eureka服务端收到最后一次心跳后等待时间上限 单位秒 (告诉eureka服务端按照规则执行)lease-expiration-duration-in-seconds: 20## eureka服务器页面中status的请求路径(查看swagger页面的信息)status-page-url: http://${eureka.instance.hostname}:${server.port}/swagger-ui.htmlclient:serviceUrl:defaultZone: http://lzr:123456@localhost:1111/eureka/
## 日志配置文件
logging:config: classpath:logback.xml

1.3 日志logback.xml文件配置

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false"><contextName>logback</contextName><property name="log.path" value="logs/studyconfigserver/logback/" /><property name="log.file" value="logs/studyconfigserver/logback.log" /><!--输出到控制台 --><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><!-- <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>ERROR</level></filter> --><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><!--输出到文件 --><appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${log.file}</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${log.path}%d{yyyy-MM-dd_HH}.log</fileNamePattern><maxHistory>30</maxHistory><!-- 指定日志文件的上限大小,例如设置为1GB的话,那么到了这个值,就会删除旧的日志 --><totalSizeCap>1GB</totalSizeCap></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><root level="info"><appender-ref ref="console" /><appender-ref ref="file" /></root></configuration>

1.4 启动类

package com.lzr;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 lzr* @date 2019/12/6 0006 14:51*/
@EnableEurekaClient// 注入到注册中心
@SpringBootApplication
@EnableConfigServer// 开启配置服务器
public class ConfigServerApplication {public static void main(String[] args) {SpringApplication.run(ConfigServerApplication.class,args);}}

1.5 项目结构图

2. 创建客户端

右键点击父项目,点击new,选择module),再选择maven,然后点击next
出现:

填写artifactid,然后点击next,最后点击finish

2.1 pom依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>study-springcloudframework</artifactId><groupId>com.lzr</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>study-config-client</artifactId><name>配置客户端(测试端)</name><description>study-config-client</description><dependencies><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><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><!-- 手动刷新配置依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency></dependencies></project>

2.2 bootstrap.yml配置

bootstrap.yml会在application.yml之前加载

## 服务器端口
server:port: 4112
## 读取配置服务器数据
spring:application:name: study-config-clientcloud:config:## 指明远程仓库的分支label: master## 配置文件环境,也可当成文件[study-config-client-dev.properties]服务名称后缀profile: dev## 配置服务器中心地址uri: http://localhost:4111/
### eureka配置(git文件中存在这些配置,这里就不需要配置了)
#eureka:
#  instance:
#    ## eureka主机名,会在控制页面中显示
#    hostname: localhost
#    prefer-ip-address: true
#    ## 心跳检测,检测与持续时间
#    ## 发送心跳间隔时间 单位秒 (测试的时候设置小一点,让eureka服务端及时踢出该服务)
#    lease-renewal-interval-in-seconds: 10
#    ## eureka服务端收到最后一次心跳后等待时间上限 单位秒 (告诉eureka服务端按照规则执行)
#    lease-expiration-duration-in-seconds: 20
#    ## eureka服务器页面中status的请求路径(查看swagger页面的信息)
#    status-page-url: http://${eureka.instance.hostname}:${server.port}/swagger-ui.html
#  client:
#    serviceUrl:
#      defaultZone: http://lzr:123456@localhost:1111/eureka/
### actuator下默认端点时health和info,没有refresh端点,以此需要添加该端点
#management:
#  endpoints:
#    web:
#      exposure:
#        include: health,info,refresh
### 日志配置文件
#logging:
#  config: classpath:logback.xml

2.3 日志logback.xml文件配置

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false"><contextName>logback</contextName><property name="log.path" value="logs/studyconfigclient/logback/" /><property name="log.file" value="logs/studyconfigclient/logback.log" /><!--输出到控制台 --><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><!-- <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>ERROR</level></filter> --><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><!--输出到文件 --><appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${log.file}</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${log.path}%d{yyyy-MM-dd_HH}.log</fileNamePattern><maxHistory>30</maxHistory><!-- 指定日志文件的上限大小,例如设置为1GB的话,那么到了这个值,就会删除旧的日志 --><totalSizeCap>1GB</totalSizeCap></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><root level="info"><appender-ref ref="console" /><appender-ref ref="file" /></root><!-- 打印执行的sql name指定mapper所在的包,additivity设定为true时,父级也会打印相应的信息,相当于打印多次 --><!--<logger name="com.cloudrises.projectframework.logic.dao" level="DEBUG" additivity="false"><appender-ref ref="console" /><appender-ref ref="file" /></logger>--><!-- 测试环境+开发环境. 多个使用逗号隔开. --><!--<springProfile name="test,dev"><logger name="com.cloudrises.projectframework" level="info" /></springProfile>--><!-- 生产环境. --><!--<springProfile name="prod"><logger name="com.cloudrises.projectframework" level="ERROR" /></springProfile>--></configuration>

2.4 启动类

package com.lzr;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;/*** @author lzr* @date 2019/12/6 0006 15:55*/
@EnableEurekaClient
@SpringBootApplication
@RefreshScope// 手动刷新配置文件 地址: /actuator/refresh (在需要刷新配置的地方配置这个注解)
public class ConfigClientApplication {public static void main(String[] args) {SpringApplication.run(ConfigClientApplication.class,args);}}

2.5 测试类

package com.lzr.controller;import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;/*** @author lzr* @date 2019/12/6 0006 16:42*/
@Log4j2
@RestController
@RefreshScope// 手动刷新配置文件 地址: /actuator/refresh (在需要刷新配置的地方配置这个注解)
public class ConfigClientController {@Value("${logging.config}")private String loggingConfig;@GetMapping("/getLogBackClientInfo")public String getLogBackClientInfo(){log.info("获取到loggingConfig信息:[{}]",loggingConfig);return loggingConfig;}}

2.6 项目结构图

三. 项目地址

项目 git地址 将在最后一章附上。
若有疑问,请在评论区留言,谢谢

springcloud简单微服务框架 | 第六章 分布式配置中心相关推荐

  1. Spring Cloud构建微服务架构(四)分布式配置中心

    Spring Cloud Config为服务端和客户端提供了分布式系统的外部化配置支持.配置服务器为各应用的所有环境提供了一个中心化的外部配置.它实现了对服务端和客户端对Spring Environm ...

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

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

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

    转载请标明出处: http://blog.csdn.net/forezp/article/details/81041045 本文出自方志朋的博客 个人博客纯净版:https://www.fangzhi ...

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

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

  5. 基于docker部署的微服务架构(四): 配置中心

    原文:http://www.jianshu.com/p/b17d65934b58%20 前言 在微服务架构中,由于服务数量众多,如果使用传统的配置文件管理方式,配置文件分散在各个项目中,不易于集中管理 ...

  6. Spring Cloud第六章:配置中心Config

    在上一篇文章讲述zuul的时候,已经提到过,使用配置服务来保存各个服务的配置文件.它就是Spring Cloud Config. 一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管 ...

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

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

  8. SpringCloud教程六:分布式配置中心(SpringCloud Config)

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

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

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

最新文章

  1. 面试准备3——相关知识
  2. express 解析 ajax post 数据 body 为空对象
  3. ajax无刷新留言板远吗,php+ajax制作无刷新留言板,phpajax刷新留言板_PHP教程
  4. vmware下linux虚拟机传文件解决方案之 xftp
  5. apache weblogic ssl linux,apache基于ssl配置weblogic(完结篇)
  6. Pyton学习—字符串
  7. 【论文写作】毕业论文写作的基本流程
  8. 华为智慧屏 鸿蒙如何获得,荣耀智慧屏得鸿蒙助力,玩法超多
  9. matlab可以做什么,matlab仿真用来干什么
  10. 【论文阅读】基于强化学习的网络安全防护策略
  11. rust石墙掉耐久_rust恢复房子耐久 | 手游网游页游攻略大全
  12. BWA mem序列比对时出现:paired reads have different names 问题解决
  13. 请按该计酬方式计算员工的工资。
  14. LeetCode——347. 前 K 个高频元素【最小堆实现】
  15. 2020年我国知识产权服务业市场现状分析,区域发展不平衡、地域性强「图」
  16. AVPlayer进行视频播放
  17. 自适应控制——仿真实验二 用Narendra方案设计模型参考自适应系统
  18. 先学微机原理还是计算机组成原理,计算机组成原理学习指导
  19. rebol学习(介绍篇)
  20. 在word中方便的输入公式

热门文章

  1. python编程超市购物系统_python面向过程编程小程序- 模拟超市收银系统
  2. 修改Windows PowerShell的背景图片
  3. 简述计算机联锁设备三取二制式的工作原理,车站信号
  4. 我的一天--20220330
  5. Windows只能安装到GPT磁盘
  6. Cesium 剖面分析实现
  7. 四维几何世界中的盒子
  8. Numerical Coordinate Regression with Convolutional Neural Networks 阅读笔记
  9. docker php-fpm 优化,利用docker-compose快速部署php-fpm+nginx环境
  10. Chrome代理服务器出现问题,或者地址有误(win10)