Ok Boom

”勿忘初心,方得始终“

概述

在常规单体项目开发中,我们会有很多配置,比如本地开发环境配置、测试环境配置、生产环境配置、开关配置等
通常我们都会放在resource文件夹下,在编译打包期间,把对应的profile打包进去。

在微服务环境下场景下,由于服务的拆分会衍生出N个服务,这样每个服务都需要去写配置文件,这样一来需要管理的配置文件数据急剧上升,上线后如果需要改一些配置,会很头疼。
然而这些都不是问题,Spring Cloud为我们提供了一个统一配置管理中心Spring Cloud Config 来解决这些问题

Spring Cloud Config 角色

config-server
Spring Cloud Config可以分成3个部分

  • 远程文件,git、subversion、native、vault
  • Config Server 配置中心
  • Config Client 配置客户端

Spring CLoud Config Server 启动分析

config-server

EnvironmentRepositoryConfiguration.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
@Configuration
@ConditionalOnMissingBean(EnvironmentRepository.class)
protected static class DefaultRepositoryConfiguration {

@Autowired
private ConfigurableEnvironment environment;

@Autowired
private ConfigServerProperties server;

@Bean
public MultipleJGitEnvironmentRepository defaultEnvironmentRepository() {
MultipleJGitEnvironmentRepository repository = new MultipleJGitEnvironmentRepository(this.environment);
if (this.server.getDefaultLabel()!=null) {
repository.setDefaultLabel(this.server.getDefaultLabel());
}
return repository;
}
}
@Configuration
@Profile("native")
protected static class NativeRepositoryConfiguration {

@Autowired
private ConfigurableEnvironment environment;

@Bean
public NativeEnvironmentRepository nativeEnvironmentRepository() {
return new NativeEnvironmentRepository(this.environment);
}
}

@Configuration
@Profile("git")
protected static class GitRepositoryConfiguration extends DefaultRepositoryConfiguration {}

@Configuration
@Profile("subversion")
protected static class SvnRepositoryConfiguration {
@Autowired
private ConfigurableEnvironment environment;

@Autowired
private ConfigServerProperties server;

@Bean
public SvnKitEnvironmentRepository svnKitEnvironmentRepository() {
SvnKitEnvironmentRepository repository = new SvnKitEnvironmentRepository(this.environment);
if (this.server.getDefaultLabel()!=null) {
repository.setDefaultLabel(this.server.getDefaultLabel());
}
return repository;
}
}

@Configuration
@Profile("vault")
protected static class VaultConfiguration {
@Bean
public VaultEnvironmentRepository vaultEnvironmentRepository(HttpServletRequest request, EnvironmentWatch watch) {
return new VaultEnvironmentRepository(request, watch, new RestTemplate());
}
}
阅读全文 »

概述

Spring Cloud Config是一个为分布式系统提供统一配置支持的项目。
Spring Cloud Config还未出来前,我们可以用zookeeper来做统一配置管理中心

Spring Cloud Config Server

怎么创建一个配置中心呢?

目录结构

1
2
3
4
5
6
7
8
9
10
11
12
13
.
├── config-server.iml
├── pom.xml
└── src
├── main
│   ├── java
│   │   └── com
│   │   └── tookbra
│   │   └── ConfigApplication.java
│   └── resources
│   └── application.yml
└── test
└── java

pom.xml

1
2
3
4
5
6
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
</dependencies>

application.java

1
2
3
4
5
6
7
8
@EnableConfigServer
@SpringBootApplication
public class Application {

public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
阅读全文 »

eureka-logo

本次spring-cloud-starter-eureka源码的版本为1.3.0

阅读全文 »

eureka-logo

[Spring Cloud Eureka]

本次spring-cloud-starter-eureka-server源码的版本为1.3.0

阅读全文 »