赞
踩
随着线上项目变的日益庞大,每个项目都有各种配置文件,如果采用分布式的开发模式,需要的配置文件随着服务增加而不断增多。某一个基础服务信息变更,都会引起一系列的更新和重启,运维成本高也容易出错。配置中心便是用来解决此类问题的。
一个配置中心提供的核心功能应该有什么:
Spring Cloud Config项目是一个解决分布式系统的配置管理方案。它包含了Client和Server两个部分,server提供配置文件的存储、以接口的形式将配置文件的内容提供出去,client通过接口获取数据、并依据此数据初始化自己的应用。Spring Cloud使用git或svn存放配置文件,默认情况下使用git。
一、Config server
0. 使用github创建配置文件
1. 创建工程config_server, pom.xml如下:
<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"> <modelVersion>4.0.0</modelVersion> <groupId>com.kevin</groupId> <artifactId>config_server</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>config_server</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.4.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Greenwich.SR1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> </project>
2. application.properties
spring.application.name=configServer
server.port=9111
#git地址
spring.cloud.config.server.git.uri=https://github.com/kevin4j/spring-cloud.git
#指定分支,默认master,但是新建的github分支已经默认为main,所以此处需指定
spring.cloud.config.server.git.default-label=main
#文件目录
spring.cloud.config.server.git.search-paths=config-file
spring.cloud.config.server.git.username=
spring.cloud.config.server.git.password=
3. Application.java开启ConfigServer
package com.kevin.config_server;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
@SpringBootApplication
@EnableConfigServer
public class Application {
public static void main( String[] args ) {
SpringApplication.run(Application.class, args);
}
}
4. 启动后访问http://127.0.0.1:9111/eurekaRibbon/dev
也可以直接访问文件内容:http://127.0.0.1:9111/eurekaRibbon-dev.properties
二、Config Client,在eureka_ribbon的基础上进行调整
1. pom.xml引入config
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
2. 增加config配置文件bootstrap.properties
#配置文件名
spring.cloud.config.name=eurekaRibbon
#配置环境
spring.cloud.config.profile=dev
#config server地址
spring.cloud.config.uri=http://127.0.0.1:9111
spring.cloud.config.label=master
3. application.properties
spring.application.name=eurekaRibbon
server.port=9201
eureka.client.serviceUrl.defaultZone=http://localhost:9101/eureka/
eureka.client.healthcheck.enabled=true
4. 测试类
@RestController
public class HelloController {
@Value("${hello.name}")
private String helloName;
@RequestMapping("/getHelloName")
public String getHelloName() {
return this.helloName;
}
}
5. 重新启动eureka_ribbon,可以看出启动时会先读取配置中心的配置,即bootstrap.yml优先级高于application.yml先加载
6. 测试http://127.0.0.1:9201/getHelloName
参考:
https://cloud.spring.io/spring-cloud-static/Greenwich.SR1/single/spring-cloud.html#_spring_cloud_config
http://www.ityouknow.com/springcloud/2017/05/22/springcloud-config-git.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。