ServerConfig
SpringCloud 组件,ServerConfig 是配置服务中心,组件,用于统一管理项目配置
原理
读取配置文件内容到服务中心
通过启动一个springboot服务(server-config),配置好git仓库地址(也可以svn或者其他),通过配置好的文件地址,访问配置文件,将配置读取到服务中心,并且文件内容修改后,可以实时刷新。
客户端到配置中心读配置内容
其他微服务访问配置不需要访问git,只需要通过访问ServerConfig读取配置,能到达统一配置的目的。
搭建
前提概要,本搭建使用ide:Spring Tool Suite 4
Version: 4.3.0.RELEASE
Build Id: 201906200901安装好maven 3.6.3,并配置好网络通畅的maven仓库地址,有些国外仓库地址可能网速不好,下载依赖慢。
国内镜像仓库反而更快 https://www.cnblogs.com/Narule/p/12595960.html
Server
file -> new -> Spring Starter Project
pom依赖
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.2.5.RELEASE
com.wunanyu
Config
0.0.1-SNAPSHOT
Config
Demo project for Spring Boot
1.8
Hoxton.SR3
org.springframework.cloud
spring-cloud-config-server
org.springframework.boot
spring-boot-starter-test
test
org.junit.vintage
junit-vintage-engine
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
org.springframework.boot
spring-boot-maven-plugin
配置文件
application.yml
server:
port: 8888 # 服务端口号
spring:
application:
name: server-config #服务名
cloud:
config:
server:
git:
uri: /usr/data/git/cloud/config #linux配置文件地址
# 这里可以配置文件路径,也可以配置服务器路径,windows需要添加//
# 如uri: file://${user.home}/config-repo
# github uri:https://github.com/repo
#
#logging:
#config: src/main/resources/logback-spring.xml
log:
path: log #日志路径
更详细可以见https://www.cnblogs.com/hellxz/p/9306507.html
logback-spring.xml
日志打印的配置文件已经配置好,可以直接用,这里不介绍logback细节,不是本次重点
INFO
${LOG_PATTERN}
${log.path}/${app}-all.log
INFO
${log.path}/all/${app}-all-logging-%d{yyyy-MM-dd}.log
30
1GB
${LOG_PATTERN}
${log.path}/${app}-info.log
INFO
ACCEPT
DENY
${log.path}/info/${app}-info-logging-%d{yyyy-MM-dd}.log
30
1GB
${LOG_PATTERN}
${log.path}/${app}-warn.log
WARN
ACCEPT
DENY
${log.path}/warn/${app}-warn-logging-%d{yyyy-MM-dd}.log
30
1GB
${LOG_PATTERN}
${log.path}/${app}-error.log
Error
${log.path}/error/${app}-error-logging-%d{yyyy-MM-dd}.log
30
1GB
${LOG_PATTERN}
启动类
package com.wunanyu.cloud.config;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
@SpringBootApplication //springboot启动类注解
@EnableConfigServer //SpringCloud-ServerConfig配置中心服务注解,表示这是配置服务中心
/**
* @author Narule
*/
public class ConfigApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigApplication.class, args);
}
}
启动这个类的main方法,看控制台console的打印日志是否启动成功,启动成功,则可以通过
localhost:8888/eureka-dev.yml 查看配置信息,只要配置地址有这个文件
configserver 配置文件规则
/ { 应用名 } / { 环境名 } [ / { 分支名 } ]
/ { 应用名 } - { 环境名 }.yml
/ { 应用名 } - { 环境名 }.properties
/ { 分支名 } / { 应用名 } - { 环境名 }.yml
/ { 分支名 } / { 应用名 } - { 环境名 }.properties
client 读取配置
如果一个springboot服务叫eureka,eureka配置如下
bootstrap.yml
spring:
application:
name: eureka #应用名
cloud:
config:
uri: localhost:8888 #配置中心的访问地址 这不是配置文件的地址,是配置服务server-config的地址
profile: dev #环境
label: master #分支
management:
endpoints:
web:
exposure:
include:
- "*"
eureka:
server:
renewal-percent-threshold: 0.45
log:
path: log
那么他会读取的文件名称为eureka-dev.yml
, git分支为master的文件(默认)
Client
Client 其实只是在pom中添加 config依赖
并且在bootstrap.yml 中配置server-config服务的url地址,Client就能自己读取到配置中心服务的数据
pom依赖
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.2.5.RELEASE
com.wunanyu
Eureka
0.0.1-SNAPSHOT
Eureka
Demo project for Spring Boot
1.8
Hoxton.SR3
org.springframework.boot
spring-boot-starter-test
test
org.junit.vintage
junit-vintage-engine
org.springframework.cloud
spring-cloud-starter-config
org.springframework.boot
spring-boot-starter-actuator
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
org.springframework.boot
spring-boot-maven-plugin
配置文件
bootstrap.yml
spring:
application:
name: eureka
cloud:
config:
uri: http://192.168.50.135:8888
profile: dev
label: master
management:
endpoints:
web:
exposure:
include:
- "*"
eureka:
server:
renewal-percent-threshold: 0.45
log:
path: log
logback-spring.xml
INFO
${LOG_PATTERN}
${log.path}/${app}-all.log
INFO
${log.path}/all/${app}-all-logging-%d{yyyy-MM-dd}.log
30
1GB
${LOG_PATTERN}
${log.path}/${app}-info.log
INFO
ACCEPT
DENY
${log.path}/info/${app}-info-logging-%d{yyyy-MM-dd}.log
30
1GB
${LOG_PATTERN}
${log.path}/${app}-warn.log
WARN
ACCEPT
DENY
${log.path}/warn/${app}-warn-logging-%d{yyyy-MM-dd}.log
30
1GB
${LOG_PATTERN}
${log.path}/${app}-error.log
Error
${log.path}/error/${app}-error-logging-%d{yyyy-MM-dd}.log
30
1GB
${LOG_PATTERN}
启动类
package com.wunanyu.cloud.eureka;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}