SpringCloud 之 分布式配置中心
2020-05-09 本文已影响0人
索性流年
为什么要使用分布式配置中心?
在微服务中,如果使用传统方式管理配置文件,配置文件管理起来非常复杂。
什么是配置中心?
在微服务中使用同一个服务器去管理所有配置文件,能够实现后台可管理,当服务器正在运行的时候,如果配置文件需要改变,可以实现不需要重启服务器,实时更改配置文件信息。
分布式配置中心框架:
阿波罗携程写分布式配置中心有图形界面可管理配置文件信息,配置文件信息存放数据库里面
SpringCloud Config没有后台可管理分布式配置中心,配置文件信息存放在版本控制器里面(git|svn)
使用Zookeeper实现分布式配置中心,持久节点+事件通知
搭建Git环境配置文件
image.png配置文件-.(dev- test、pre、prd)
配置文件命名规范: ctient服务名称(注册中心名称)一版本: yml
搭建分布式配置中心(Server)
pml.xml 引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<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>
application.yml 添加配置
###服务注册到eureka地址
eureka:
client:
service-url:
defaultZone: http://localhost:8100/eureka
spring:
application:
###注册中心应用名称
name: config-server
cloud:
config:
server:
git:
### git环境地址
uri: https ://gitee.com/itmayi/config_ 003.git
####搜索目录
search-paths :
- config
###读取分支(master主分支)
label: master
####端口号
server:
port: 8888
项目启动类添加 @EnableConfigServer 注解
@SpringBootApplication
@EnableEurekaClient
//将服务作为分布式配置中心
@EnableConfigServer
public class SpringcloudConfigApplication {
public static void main(String[] args) {
SpringApplication.run(SpringcloudConfigApplication.class, args);
}
}
获取配置文件(client)
新建消费者工程pom导入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- actuator监控中心 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
yml配置
#配置会员服务端口号
server:
port: 8000
#服务别名不区分大小写
spring:
application:
name: app-member
cloud:
config:
discovery:
service-id: config-server
enabled: true
profile: dev
eureka:
client:
#注册中心地址
service-url:
defaultZone: http://localhost:8100/eureka
#是否需要添加到注册中心
register-with-eureka: true
#是否需要检索配置中心信息
fetch-registry: true
新建IndexService.class
/*
* configCline获取配置文件
* */
@RestController
/*实时刷新配置*/
@RefreshScope
public class IndexService {
@Value("@{userAge}")
public String userAge;
@GetMapping("/getUserAge")
public String getUserAge(){
return userAge;
}
}
手动刷新配置文件调用接口
- (服务域名:端口号/actuator/refresh)