springcloud简单微服务框架 | 第六章 分布式配置中心
在微服务中,配置文件一旦出现问题,则需要重新打包部署,若是一个服务出现问题处理起来不是很麻烦,但是如果很多服务都出现了问题,则需要浪费大量时间,基于这个问题,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简单微服务框架 | 第六章 分布式配置中心相关推荐
- Spring Cloud构建微服务架构(四)分布式配置中心
Spring Cloud Config为服务端和客户端提供了分布式系统的外部化配置支持.配置服务器为各应用的所有环境提供了一个中心化的外部配置.它实现了对服务端和客户端对Spring Environm ...
- 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)
转:https://blog.csdn.net/forezp/article/details/70037291 最新版本: 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spr ...
- 史上最简单的SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)(Finchley版本)
转载请标明出处: http://blog.csdn.net/forezp/article/details/81041045 本文出自方志朋的博客 个人博客纯净版:https://www.fangzhi ...
- 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)(Finchley版本)...
转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f6-config/ 本文出自方志朋的博客 在上一篇文章讲述z ...
- 基于docker部署的微服务架构(四): 配置中心
原文:http://www.jianshu.com/p/b17d65934b58%20 前言 在微服务架构中,由于服务数量众多,如果使用传统的配置文件管理方式,配置文件分散在各个项目中,不易于集中管理 ...
- Spring Cloud第六章:配置中心Config
在上一篇文章讲述zuul的时候,已经提到过,使用配置服务来保存各个服务的配置文件.它就是Spring Cloud Config. 一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管 ...
- Java B2B2C o2o多用户商城 springcloud架构 (六)分布式配置中心(Spring Cloud Config)
一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组件spring cloud config ...
- SpringCloud教程六:分布式配置中心(SpringCloud Config)
在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持 ...
- SpringCloud学习(十八):Config分布式配置中心的介绍与搭建
目录 一.概述 1.分布式系统面临的配置问题 2. Config配置中心是什么 3.Spring Config能做什么 二.Config总控中心配置与测试 1.在Gitee上新建仓库 2.本地硬盘目录 ...
最新文章
- 面试准备3——相关知识
- express 解析 ajax post 数据 body 为空对象
- ajax无刷新留言板远吗,php+ajax制作无刷新留言板,phpajax刷新留言板_PHP教程
- vmware下linux虚拟机传文件解决方案之 xftp
- apache weblogic ssl linux,apache基于ssl配置weblogic(完结篇)
- Pyton学习—字符串
- 【论文写作】毕业论文写作的基本流程
- 华为智慧屏 鸿蒙如何获得,荣耀智慧屏得鸿蒙助力,玩法超多
- matlab可以做什么,matlab仿真用来干什么
- 【论文阅读】基于强化学习的网络安全防护策略
- rust石墙掉耐久_rust恢复房子耐久 | 手游网游页游攻略大全
- BWA mem序列比对时出现:paired reads have different names 问题解决
- 请按该计酬方式计算员工的工资。
- LeetCode——347. 前 K 个高频元素【最小堆实现】
- 2020年我国知识产权服务业市场现状分析,区域发展不平衡、地域性强「图」
- AVPlayer进行视频播放
- 自适应控制——仿真实验二 用Narendra方案设计模型参考自适应系统
- 先学微机原理还是计算机组成原理,计算机组成原理学习指导
- rebol学习(介绍篇)
- 在word中方便的输入公式
热门文章
- python编程超市购物系统_python面向过程编程小程序- 模拟超市收银系统
- 修改Windows PowerShell的背景图片
- 简述计算机联锁设备三取二制式的工作原理,车站信号
- 我的一天--20220330
- Windows只能安装到GPT磁盘
- Cesium 剖面分析实现
- 四维几何世界中的盒子
- Numerical Coordinate Regression with Convolutional Neural Networks 阅读笔记
- docker php-fpm 优化,利用docker-compose快速部署php-fpm+nginx环境
- Chrome代理服务器出现问题,或者地址有误(win10)