原创文章,转载请注明原文章地址,谢谢!
分布式配置中心
从服务级别看微服务,其实是将单体应用中的业务拆分成一个个子服务,每个子服务相对独立,功能明确,可独立部署,拥有自己独立的数据库。而每个这样的服务,会依赖一些外部的配置信息,如果是微服务很多的情况下,各自的配置文件也是非常多了,无形中增加了管理这些配置文件的压力。所以基于这种形式下,一套集中的、动态的配置管理是非常有必要的,而SpringCloud为我们解决了这样的问题。
SpringCloud Config为微服务架构中的各个微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置。
SpringCloud Config分为服务端和客户端两部分。服务端也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置服务器并为客户端提供获取配置信息,加密/解密信息等访问接口。客户端则是通过指定的配置中心来管理应用资源,以及与业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息,配置服务器默认采用git来存储配置信息,这样就有助于对环境配置进行版本管理,并且可以通过git客户端工具来方便的管理和访问配置内容。
分布式配置中心的作用
- 集中管理配置文件。
- 不同环境不同配置,动态化的配置更新,分环境部署。
- 运行期间动态调整配置,不再需要在每个服务部署的机器上编写配置文件,服务会向配置中心统一拉取配置自己的信息。
- 当配置发生变动时,服务不需要重启即可感知到配置的变化并应用新的配置。
- 将配置信息以REST接口的形式暴露。
Config服务端配置
首先在自己的GitHub上新建仓库repository,然后通过http的方式获取到地址,也可以通过SSH方式获取到地址。在本地的一个盘符下,新建一个文件夹config,然后右击打开Git Bash,使用命令:git clone 地址,将远程库克隆至本地。进入到repository文件夹,新建application.yml文件,添加配置,最后以UTF-8编码保存。
spring:
profiles:
active:
- dev
---
spring:
profiles: dev #开发环境
application:
name: cloud-config-dev
---
spring:
profiles: test #测试环境
application:
name: cloud-config-test
使用Git命令,将上述文件提交并推送至远程。
接下来新建cloud-config-3001模块,添加关于springcloud config相关的maven依赖。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
application.yml
server:
port: 3001
spring:
application:
name: cloud-config
cloud:
config:
server:
git:
uri: https://github.com/repository.git #github上面的git仓库名字
在主启动类上添加@EnableConfigServer注解,开启配置中心。在这里需要在本地hosts文件中添加映射关系。
127.0.0.1 config3001.com
最后来测试一下,启动cloud-config-3001,访问config3001.com:3001/application-dev.yml
访问不存在的配置config3001.com:3001/application-qq.yml
至此,我们已经通过Config服务端访问了github远程的配置,并且可以通过修改配置环境,切换读取的配置信息。
博客内容仅供自已学习以及学习过程的记录,如有侵权,请联系我删除,谢谢!
网友评论