分布式配置中心spring cloud config
spring cloud config 是用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持,分为服务端和客户端。
服务端:分布式配置中心,是一个独立的微服务,用来连接配置仓库并为客户端提供配置信息;
客户端:微服务框架中微服务应用或基础设施。
服务端:
pom.xml引入依赖:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.RELEASE</version>
<relativePath />
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</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>Dalston.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
2.在程序主类开启spring cloud config 的服务端功能:
@EnableConfigServer
@SpringBootApplication
3.在application.properties添加配置类信息:
spring.cloud.config.server.git.uri=http://git.oschina.net/didispace/SpringCloud-Learning/
spring.cloud.config.server.git.searchPaths=spring_cloud_in_action/config-repo
spring.cloud.config.server.git.username=username
spring.cloud.config.server.git.password=password
客户端:
客户端配置映射:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.RELEASE</version>
<relativePath />
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
创建主应用类:
@SpringBootApplication
创建bootstrap.properties文件:
spring.application.name=didispace 对应文件规则{application}部分
spring.cloud.config.profile=dev 对应文件规则{profile}部分
spring.cloud.config.label=master 对应文件规则{label}部分
spring.cloud.config.uri=http://localhost:7001/
server.port=7002
追加:和eureka的整合与本地配置:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
@EnableDiscoveryClient
@EnableConfigServer
@SpringBootApplication
public class SpringCloudConfigApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCloudConfigApplication.class, args);
}
}
server:
port: 8005
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8001/eureka/
instance:
prefer-ip-address: true
instance-id: ${spring.cloud.client.ipAddress}:${server.port}
spring:
cloud:
config:
server:
native:
search-locations: classpath:自定义路径/ # 搜索src/main/resource 下自定义的路径
application:
name: service-config
profiles:
active: native # 配置使用本地储存
客户端:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
@RestController
@EnableDiscoveryClient // 在注册中心发现服务
@SpringBootApplication
public class SpringCloudConfigClientApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCloudConfigClientApplication.class, args);
}
@Value("${from}") // 从对应的配置中心找到文件并把属性注入到value值中
private String value;
@RequestMapping("/hello")
public String hello() {
return "hello" + value;
}
}
server:
port: 8006
spring:
application:
name: service-config-client
cloud:
config:
discovery:
enabled: true # 通过服务发现的方式去找配置中心
service-id: service-config # 配置中心的名字,直接配置名称可以在配置中心集群的时候实现负载均衡
profile: base # 对应配置中心文件的${profile}部分
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8001/eureka/
instance:
prefer-ip-address: true # 使用ip地址注册到eureka server
instance-id: ${spring.cloud.client.ipAddress}:${server.port} # 在eureka server中看到的status显示为具体的ip地址和port
还没有评论,来说两句吧...