Spring-Cloud-Finchley | 配置中心 Config

简介

在一个分布式微服务集群中,可能会有成百上千的服务,每个服务都有大量的配置,这些配置散落在各个服务,造成难以维护,所以,我们需要一个配置中心来统一管理这些配置,Spring Cloud Config 可以实现所有服务的配置管理。

实例

1、创建 maven 工程
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
  </properties>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.5.RELEASE</version>
    <relativePath/>
  </parent>

  <dependencies>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>

  </dependencies>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>${spring-cloud.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>
2、搭建配置中心服务 service-config-server

添加 maven 依赖

	<parent>
		<groupId>com.hly</groupId>
		<artifactId>06-spring-cloud-config</artifactId>
		<version>1.0-SNAPSHOT</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>

		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-config-server</artifactId>
			<version>2.0.2.RELEASE</version>
		</dependency>

	</dependencies>

application.yml

server:
  port: 8769
spring:
  cloud:
    config:
      server:
        native:
          search-locations: classpath:/share
  profiles:
    active: native
  application:
    name: service-config-server

如果我们想把配置信息存储到 git 上,我们还可以这样配置,git 仓库地址如下
https://gitee.com/Sirius_hly/respo/blob/master/share/config-client-dev.yml

server:
  port: 8769
spring:
  cloud:
    config:
      server:
        git:
          # git环境地址
          uri: https://gitee.com/Sirius_hly/respo.git
          # 搜索目录
          search-paths:
            - share
      # 读取分支
      label: master
  application:
    name: service-config-server

配置信息可以存放到项目本地,也可以存放到 github 上,在这里配置中心里,我们创建了一个 config-client-dev.yml 文件,来存放另一个客户端服务的配置信息。

server:
  port: 8762
hly: hly version 1

SpringBoot 启动类

@SpringBootApplication
@EnableConfigServer
public class ServiceConfigServerApplication {

	public static void main(String[] args) {
		SpringApplication.run(ServiceConfigServerApplication.class, args);
	}
}
3、搭建客户端 service-config-client

添加 maven 依赖

		<parent>
		<groupId>com.hly</groupId>
		<artifactId>06-spring-cloud-config</artifactId>
		<version>1.0-SNAPSHOT</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-config-client</artifactId>
			<version>2.0.2.RELEASE</version>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
	</dependencies>

添加 bootstrap.yml 配置文件,在SpringBoot 中 ,boootstrap.yml 的执行优先级高于applicatiom.yml,在这里我们指明了配置中心的地址为 8769

spring:
  application:
    name: config-client
  cloud:
    config:
       uri: http://localhost:8769
       fail-fast: true
  profiles:
    active: dev

SpringBoot 启动类

@SpringBootApplication
@RestController
public class ServiceConfigClientApplication {

	public static void main(String[] args) {
		SpringApplication.run(ServiceConfigClientApplication.class, args);
	}

	@Value("${hly}")
	String hly;
	@RequestMapping(value = "/hly")
	public String hi(){
		return hly;
	}
}

演示

1、先启动配置中心,然后再启动客户端。
2、访问 http://localhost:8762/hly
显示 hly version 1 则可以看到服务从配置中心获取到了配置。
这是Spring Cloud Config 的基本使用,后面还会写一篇关于 apollo 配置中心的使用。

代码下载

06-spring-cloud-config:https://github.com/huangliangyun/Spring-Cloud-Finchley

关于

我的 Github:Github
CSDN: CSDN
个人网站: sirius 的博客
E-mail: [email protected]

推荐阅读
史上最全,最完美的 JAVA 技术体系思维导图总结,没有之一!

发布了81 篇原创文章 · 获赞 373 · 访问量 27万+

猜你喜欢

转载自blog.csdn.net/Sirius_hly/article/details/102926398