Spring Cloud Config分布式配置中心

首先搞定注册中心

file-new-module 

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.7.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.hand</groupId>
	<artifactId>springcloud</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>springcloud</name>
	<description>Demo project for Spring Boot</description>

	<properties>
		<java.version>1.8</java.version>
		<spring-cloud.version>Greenwich.SR2</spring-cloud.version>
	</properties>

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

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

 

将application.properties更名为application.yml

application.yml

---
#端口号
server:
  port: 8760
eureka:
  instance:
    hostname: localhost
  client:
    # eureka.client.registerWithEureka :表示是否将自己注册到Eureka Server,默认为true。
    # 由于当前这个应用就是Eureka Server,故而设为false
    register-with-eureka: false
    # eureka.client.fetchRegistry :表示是否从Eureka Server获取注册信息,默认为true。因为这是一个单点的Eureka Server,
    # 不需要同步其他的Eureka Server节点的数据,故而设为false。
    fetch-registry: false
    service-url:
      # eureka.client.serviceUrl.defaultZone :设置与Eureka Server交互的地址,
      #查询服务和注册服务都需要依赖这个地址。默认是
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

 启动之后浏览器访问localhost:8760

 

接着在我们的github上新建

再之后就是

新建

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.7.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>my-config-server</groupId>
	<artifactId>config-server</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>config-server</name>
	<description>Demo project for Spring Boot</description>

	<properties>
		<java.version>1.8</java.version>
		<spring-cloud.version>Greenwich.SR2</spring-cloud.version>
	</properties>

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

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

application.properties


# 配置 Spring Cloud Config Server应用名
spring.application.name=config-server

#端口
server.port = 7070
#注册中心地址
eureka.client.service-url.defaultZone=http://localhost:8760/eureka/


#配置config
#git 仓库位置
spring.cloud.config.server.git.uri=https://github.com/zhaomengxia/myconfig
#git 搜索的相对路径
spring.cloud.config.server.git.search-paths=test

#git 仓库用户名以及密码
spring.cloud.config.server.git.username=你的github账号
spring.cloud.config.server.git.password=你的github密码
  • spring.cloud.config.server.git.uri:配置Git仓库的位置,直接从浏览器地址栏中复制即可。

如图

 

  • spring.cloud.config.server.git.search-paths:搜索配置文件的相对路径。这里就是上图中的test文件夹
  • spring.cloud.config.server.git.username/password:Git仓库的帐号密码,这里可配可不配。

启动ConfigServerApplication.java

再访问localhost:8760

 我们可以看到,已经注册进来了,我们接着来看一下我们外部化配置是否读取到了。在这里我们有一个规则,这个规则是我看 翟永超大神的《Spring Cloud 微服务实战》中摘录的

/{application}/{profile}/[{label}]

/{application}-{profile}.yml

/{application}-{profile}.properties

/{label}/{application}-{profile}.properties

/{label}/{application}-{profile}.yml


这里的label 指的是对应Git上的不同的分支。默认为master。其余的可如图

所以下面浏览器中访问consumer-test.properties文件里的内容的链接是localhost:7070/consumer/test/

 到这里我们的配置中心已经搞定了。接下来让我们来搞一下客户端。

客户端配置(ribbon-consumer)

这里的客户端,我就使用之前创建的客户端了。很简单,如何搭建,可以回去看一下

下图中之所以把application.properties中的内容全部注释掉改用bootstrap.properties,这个是基于springboot的外部化配置加载顺序。

如果使用application.properties则启动会出现如下

反之如果我们采用bootstrap.properties

运行结果如下

先去注册中心查看,结果如下图,说明已经注册成功

 接下来让我们测试一下是否可以读取到 配置中心的配置吧。由下面前两张图可以得知第三张图的结果正是我们要的,所以大功告成了

 

总结

分布式配置中心方便了我们整体项目的运维以及管理,使用好了可以使我们的项目开发部署测试都完美的进行。

注册中心代码

源代码

https://github.com/zhaomengxia/springboot_mybatis.git

在项目中的位置

源代码

https://github.com/zhaomengxia/config-server.git

远程仓库配置

https://github.com/zhaomengxia/myconfig.git

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值