搭建SpringCloud git远程仓库实例演示

Spring Cloud Config

首先使用配置中心的作用:

(1)集中管理各环境的配置文件

(2)可以进行版本管理

(3)支持各种语言(技术异构性)

(4)支持大的并发查询

(5)配置文件修改之后,在不重启服务的前提下可以快速的生效

Spring Cloud Config可以解决分布式系统的配置管理方案。它包含了Client和Server两个部分,server提供配置文件的存储(有本地仓库与远程git仓库两种形式,本文主要讲的是后者)、以接口的形式将配置文件的内容提供出去,client通过接口获取数据、并依据此数据初始化自己的应用。

首先在github上面创建了一个文件夹configDir用来存放配置文件,以本人创建的仓库为例(用户名:nuclearsnail  仓库名:RemoRepository 文件夹名:configDir)为了模拟生产环境,我们在该文件夹下创建以下三个配置文件:

configclient-testproperties、configclient-dev.properties、configclient-pro.properties

server.port=8701
eureka.client.serviceUrl.defaultZone=http://ipa:8761/eureka
name=bob

为了区分内容的不同,三个文件中端口号分别为8701、8702、8703 ,name属性分别为:bob、tom、jack

初次使用git远程仓库搭建配置仓库具体步骤参见

configserver 端

1、添加依赖

<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-starter-eureka</artifactId>
			<version>1.4.6.RELEASE</version>
		</dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>
</dependencies>

只需要加入spring-cloud-config-server包引用既可。

2、configserver的application.properties配置文件


#端口号
server.port=8700
#服务名
spring.application.name=configserver
#仓库类型,native时表示本地仓库,不填或cloud为使用远程仓库
spring.profiles.active=cloud
#该服务注册地址
eureka.client.serviceUrl.defaultZone=http://ipa:8761/eureka
#配置git仓库地址
spring.cloud.config.server.git.uri=https://github.com/nuclearsnail/RemoRepository
#配置git仓库文件夹名称
spring.cloud.config.server.git.searchPaths=configDir
#git仓库的登录用户名
spring.cloud.config.server.git.username=nuclearsnail
#git仓库的登录密码
spring.cloud.config.server.git.password=*****

3、configserver启动类

在ConfigServerApplication启动类中添加注解@EnableConfigServer,激活对配置中心的支持

@EnableConfigServer
@SpringBootApplication
public class ConfigServerApplication {

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

4、在浏览器中进行远程仓库访问测试

首先我们先要测试server端是否可以读取到github上面的配置信息,直接访问:http://localhost:8700/configclient/dev

返回:

{"name":"configclient",
"profiles":["dev"],
"label":null,"version":"980fec0f3f5eda6bc83626b37b2383d6e4ea0927",
"state":null,
"propertySources":[{"name":"https://github.com/nuclearsnail/RemoRepository/configDir/configclient-dev.properties",
#==========================
"source":{"server.port":"8702","eureka.client.serviceUrl.defaultZone":"http://ipa:8761/eureka",
"name":"tom"}}]}

上述的返回的信息中分割线之前的包含了版本(version)、配置文件名称(name)、描述(profiles)等信息,分割线后面的为配置文件中的具体内容

如果直接查看配置文件中的配置信息可访问:http://localhost:8700/configclient-dev.properties
返回(注意与上面的返回信息对比,是不是一致的):

eureka.client.serviceUrl.defaultZone: http://ipa:8761/eureka
name: tom
server.port: 8702

仓库中的配置文件会被转换成web接口,访问可以参照以下的规则:

  • /{applicationName}/{profile}[/{label}]
  • /{applicationName}-{profile}.yml
  • /{label}/{applicationName}-{profile}.yml
  • /{applicationName}-{profile}.properties
  • /{label}/{applicationName}-{profile}.properties

configclient-dev.properties为例子,它的applicationName是configclient,profile是dev,label默认为master(可不填),client会根据填写的参数来选择读取对应的配置。

Configclient 端

1、添加依赖

<dependencies>
    <dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
	</dependency>

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>
    <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>
</dependencies>

2、配置文件

注意:在这里我们只需要配置bootstrap.properties,因为config的相关配置会先于application.properties,因为bootstrap文件先于application文件加载。bootstrap.properties如下:

spring.application.name=configclient
#配置中心的具体地址,向该URL读取配置文件
spring.cloud.config.uri=http://localhost:8700
#当访问不到,则执行快速失败
spring.cloud.config.failFast=true
#以下name和profile属性两个值对应到远程仓库中的配置文件名如:configclient-test.properties
spring.cloud.config.name=configclient
spring.cloud.config.profile=test
#对应git的分支。如果配置中心使用的是本地存储,则该参数无用
spring.cloud.config.label=master
#指定配置中心的service-id,便于扩展为高可用配置集群。
#spring.cloud.config.discovery.service-id=????

3、启动类

Configclient中启动类添加如下注解,为了测试方便添加@RestController作为对外接口访问配置参数

@RestController
@EnableEurekaClient
@SpringBootApplication
public class ConfigClientApplication 
{
	@Value("${name}")
	String name;
	public static void main(String[] args) {
		SpringApplication.run(ConfigClientApplication.class, args);
	}
	
	@RequestMapping("/getName")
	public String getName() {
		return name;
	}
}

4.测试

启动项目后访问服务注册中心:http://localhost:8761可以看到有两个Eurekaclient,分别名为configclient和configserver,并且configclient的端口参数是配置在远程仓库上的配置文件中的

 

启动项目后访问:http://localhost:8701/getName,返回:tom   说明已经正确的从server端获取到了参数。到此一个完整的服务端提供配置服务,客户端获取配置参数的例子就完成了。
 

猜你喜欢

转载自blog.csdn.net/fsy9595887/article/details/84869380
今日推荐