在微服务架构中,微服务数量非常多,其每个服务都有自己独立的配置文件,分布式配置中心就是用来管理这些配置文件的,其配置文件可以统一放到本地、git、svn等。spring cloud config 为实现分布式配置中心的一种组件,分为config client和config server。
个人学习总结:
链接:【springboot、springcloud、docker 等,学习目录】
官网:https://spring.io/projects/spring-cloud-config
支持git、svn、jdbc、本地等。git较为常用,本文选取git作为存储中心。
GitHub:比较流行,但是国内访问慢。
搭建git仓库:使用docker可以很方便就搭建起来,但是需要服务器。
码云:在国内也很流行,只需要注册自己的账号就可以使用了。
码云仓库的使用:
springcloud:自己建立的仓库。
springcloud_cloud:配置中心存放配置文件。
springcloud_parant:工程代码,并不是本章需要,仅仅是我个人管理代码。
服务端为独立的工程。
1、新建 springcloud_config 模块:
2、pom依赖:
org.springframework.cloud
spring-cloud-config-server
3、启动类:
/**
* @Auther: xf
* @Date: 2018/12/27 22:04
* @Description: config 配置中心服务端
*/
// 开启服务端
@EnableConfigServer
@SpringBootApplication
public class ConfigApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigApplication.class);
}
}
4、application.yml:
server:
port: 8000
spring:
application:
name: springcloud-config
cloud:
config:
server:
git:
uri: https://gitee.com/cpla026/springcloud.git
#search-paths: springcloud_config
search-paths: '*'
uri:git仓库地址。
search-paths:我在仓库中加了springcloud_config文件夹,如果仓库中直接存放配置文件则不需要此配置,"*" 代表所有。
5、上传各微服务配置文件:
这里是官网访问的规则:
则命名配置配置文件的规则:{application}-{profile}.yml或{application}-{profile}.properties
5.1、将各微服务配置文件改名后上传:
这里只测试用户微服务,命名为user-dev.yml:
5.2、启动配置中心,访问配置文件:
可以访问到配置文件信息。
每一个需要从git拉取配置文件的微服务都是一个客户端。以用户微服务为例。
这里的application.yml 可删除,我做了个备份。
1、引入依赖:
org.springframework.cloud
spring-cloud-starter-config
2、启动用户微服务会发生错误。
2.1、控制台日志第一行:
2.2、官网解释:
配置中心的客户端启动的时候会默认到本地8888端口的服务器中获取自己的配置。你可以使用bootstrap.properties配置文件来改变这一默认启动行为。bootstrap会比application优先加载。
3、新建bootstrap.yml:
spring:
cloud:
config:
# config server 地址
uri: http://127.0.0.1:8000
# name、profile 配置文件的命名
name: user
profile: dev
label: master # 存储为git时 默认为 master
4、测试:
4.1、启动配置中心、用户微服务:
报错:Eureka没有启动,不用管,本节只测试用户微服务。
4.2、请求用户微服务接口:
用户列表:http://127.0.0.1:8081/user/list
用户详情:http://127.0.0.1:8081/user/1
至此,配置中心配置完毕,用户服务成功从配置中心拉取到自己的配置文件。
总结:
1、spring cloud config 配置中心服务端为独立工程,需要web依赖。
2、在服务端指定远程仓库地址、客户端指定服务端地址。
3、客户端启动时默认寻找端口为8888的本地服务端加载配置。可使用bootstrap.properties 配置文件改变这种行为。
4、上传到远程仓库的配置文件应以{application}-{profile}.yml(properties)的格式命名。
代码地址:
1、config server:
https://gitee.com/cpla026/springcloud/tree/master/springcloud_parent/springcloud_config
2、config client
https://gitee.com/cpla026/springcloud/tree/master/springcloud_parent/springcloud_user_config
3、git 中配置文件仓库
https://gitee.com/cpla026/springcloud/tree/master/springcloud_config
个人学习分享
更多 springboot、springcloud、docker 文章,关注公众号吧: