SpringCloud Config 配置中心
2021-03-18 12:26
标签:label desc ica ring center def integer rop 调用 分布式系统中,由于服务数量非常多,配置文件分散在不同微服务项目中,管理极其不方便。为了方便配置文件集中管理,需要分布式配置中心组件。在Spring Cloud中,提供了Spring Cloud Config,它支持配置文件放在配置服务的本地,也支持配置文件放在远程仓库Git(GitHub、码云)。配置中心本质上是一个微服务,同样需要注册到Eureka服务中心! 一句话概括:统一管理所有微服务配置文件的一个微服务 配置中心,也是一个微服务,需要注册到注册中心
【配置中心的架构图】 配置文件集中放在码云 配置中心获取码云配置文件 用户服务获取配置中心文件 知名的Git远程仓库有国外的GitHub和国内的码云(gitee); GitHub主服务在外网,访问经常不稳定,如果希望服务稳定,可以使用码云; 码云访问地址:http://gitee.com 首先使用码云上的git仓库需要先注册账户 账户注册完成,然后使用账户登录码云控制台并创建公开仓库
1. 在新建的仓库中创建需要被统一配置管理的配置文件
配置文件的命名方式:{application}-{profile}.yml或{application}-{profile}.properties application为应用名称 profile用于区分开发环境dev,测试环境test,生产环境pro等 开发环境 user-dev.yml 测试环境 user-test.yml 生产环境 user-pro.yml 2. 将user-service工程里的配置文件application.yml内容复制作为user-dev.yml文件内容 3. 创建完user-dev.yml配置文件之后,gitee中的仓库如下:
实现步骤: 创建配置中心SpringBoot项目config-server 勾选Starter:配置中心,Eureka客户端 在启动引导类上加@EnableConfigServer注解 修改配置文件:端口,应用名称,注册中心地址,码云仓库地址 启动测试,测试配置文件实时同步 实现过程: 1. 创建配置中心SpringBoot项目config-server 2. pom.xml 配置文件 3. 启动类:创建配置中心工程config_server的启动类ConfigServerApplication 4. 配置文件:创建配置中心工程config_server的配置文件application.yml 5. 启动测试:启动eureka注册中心和配置中心; 目标:改造user-service工程,配置文件不再由微服务项目提供,而是从配置中心获取。 实现步骤: 在user_service服务中,添加Config的starter依赖 删除application.yml配置文件,新增bootstrap.yml配置文件 配置bootstrap.yml配置文件: 配置中心相关配置(配置文件前缀、后缀,仓库分支,是否开启配置中心) 注册中心地址 启动服务,测试效果 实现过程: 1. 添加依赖 2. 修改配置 删除user-service工程的application.yml文件 创建user-service工程bootstrap.yml配置文件,配置内容如下 启动测试: 依次启动:注册中心、配置中心、用户中心user-service
如果启动没报错,其实已经使用上配置中心内容了 可以在服务中心查看也可以检验user-service的服务 复现问题步骤: 1. 修改远程Git配置 2. 修改UserController 测试: 依次启动Eureka,配置中心,用户微服务; 访问用户微服务,查看输出内容。我们修改的user-dev.yml并没有发生立即发生变化。但是配置中心的配置文件内容发生了变化。 结论:通过浏览器输出结果发现,我们对于Git仓库中的配置文件的修改,并没有及时更新到user-service微服务,只有重启用户微服务才能生效。 ==SpringCloud Bus,解决上述问题,实现配置自动更新。== SpringCloud Config 配置中心 标签:label desc ica ring center def integer rop 调用 原文地址:https://www.cnblogs.com/zyulike/p/13915271.htmlConfig 简介
配置中心整合步骤
Git配置管理
远程Git仓库
创建远程仓库
创建配置文件
搭建配置中心微服务
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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
modelVersion>4.0.0modelVersion>
parent>
groupId>org.springframework.bootgroupId>
artifactId>spring-boot-starter-parentartifactId>
version>2.1.9.RELEASEversion>
relativePath/>
parent>
groupId>com.zyugroupId>
artifactId>config-serviceartifactId>
version>0.0.1-SNAPSHOTversion>
name>config-servicename>
description>Demo project for Spring Bootdescription>
properties>
java.version>1.8java.version>
properties>
dependencies>
dependency>
groupId>org.springframework.cloudgroupId>
artifactId>spring-cloud-config-serverartifactId>
dependency>
dependency>
groupId>org.springframework.cloudgroupId>
artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
dependency>
dependency>
groupId>org.springframework.bootgroupId>
artifactId>spring-boot-starter-testartifactId>
scope>testscope>
exclusions>
exclusion>
groupId>org.junit.vintagegroupId>
artifactId>junit-vintage-engineartifactId>
exclusion>
exclusions>
dependency>
dependencies>
dependencyManagement>
dependencies>
dependency>
groupId>org.springframework.cloudgroupId>
artifactId>spring-cloud-dependenciesartifactId>
version>Greenwich.SR3version>
type>pomtype>
scope>importscope>
dependency>
dependencies>
dependencyManagement>
build>
plugins>
plugin>
groupId>org.springframework.bootgroupId>
artifactId>spring-boot-maven-pluginartifactId>
plugin>
plugins>
build>
project>
@SpringBootApplication
@EnableDiscoveryClient//开启Eureka客户端发现功能
@EnableConfigServer //开启配置服务支持
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class,args);
}
}
server:
port: 12000
spring:
# 应用名称
application:
name: config-server
cloud:
config:
server:
git:
uri: https://gitee.com/zyulike/zyu-spring-cloud-config.git
# 注册中心地址
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
服务去获取配置中心配置
关于application.yml和bootstrap.yml文件的说明:
dependency>
groupId>org.springframework.cloudgroupId>
artifactId>spring-cloud-starter-configartifactId>
dependency>
# 注册中心地址
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
# 配置中心相关配置
# 使用配置中心
spring:
cloud:
config:
discovery:
enabled: true
service-id: config-server # 配置中心服务id
name: user # 与远程仓库中的配置文件的application和profile保持一致,{application}-{profile}.yml
profile: dev
label: master # 远程仓库中的分支保持一致
配置中心存在的问题
@RestController
@RequestMapping("/user")
public class UserController {
@Value("${server.port}")
private String port;
@Value("${test.name}")
private String name;
@Autowired
UserService userService;
//根据id查询
@RequestMapping("/findById")
public User findById(Integer id) {
System.out.println("服务【"+port+"】被调用");
User user = userService.findById(id);
user.setNote("服务【"+port+"】被调用");
user.setName(name);
return user;
}
}
上一篇:【go语言学习】面向对象oop
下一篇:C语言文件的打开和关闭