前面咱们讲了微服务的注册中心、负载均衡、熔断处理、网管服务。接下来咱们讲配置中心,为何要用配置中心呢?
其实咱们接触一段时间就能够发现,咱们的项目仍是很是多的,每一个项目都有本身的一份配置,这样管理起来就显得很不方便了,因此微服务中就提供了config 配置中心,将全部服务的配置都集中在config 服务中,这样方便统一管理。java
怎么说呢?就比如每一个项目都好比一个房间,每一个房间都须要一把钥匙才能开启。而config 则是管理这些钥匙的,比如钥匙链,想要启动那个项目,就须要先从config中获取对应的钥匙,而后启动项目。linux
下面让咱们来看下怎样部署一个config吧。配置中心分为服务端和客户端,和eureka 有点像,服务端是一个单独的项目,用来管理其余服务的配置,其余的服务就是客户端。git
首先咱们建立一个config 的子模块,用来作config 服务端,而后在pom.xml 文件中加入config-server依赖程序员
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency>
在启动类中,咱们加入@EnableConfigServer 注解github
在配置文件中咱们加入以下配置:spring
server.port=9008 spring.application.name=config-server #使用本地属性文件 spring.profiles.active = native #属性文件地址,只要指定文件夹的路径 spring.cloud.config.server.native.searchLocations=classpath:/properties
这里咱们spring.profiles.active = native 表示你从本地加载配置文件,后面咱们再从git 上加载配置文件。
若是不配置加载文件的地址,就会从src/main/resources 中加载文件。我这里配置了从properties文件夹下加载,因此在resources 文件夹下建立一个properties 文件夹。咱们一eureka-server 服务为例。咱们将这个项目的配置放到properties 文件夹下,并更名为
quellanan-eurekaserver.propertiesbootstrap
好了,上面的服务端就已经配置好了,接下来咱们来配置客户端。segmentfault
在pom.xml 文件中引入config 依赖app
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency>
在resources 目录下建立一个 bootstrap.properties 文件,至于为何要是这个而不是application.properties 文件,是由加载机制决定的,加载的时候会先加载bootstrap.properties 文件,而后加载application.properties ,
文件内容以下:负载均衡
spring.application.name=quellanan spring.cloud.config.profile=eurekaserver spring.cloud.config.label=master spring.cloud.config.uri=http://localhost:9008/
在本地也是同样的,spring.application.name和spring.cloud.config.profile拼起来就是文件名称。
好了,服务端和客户端都配置好了,咱们如今先将客户端的application.properties 文件删除掉,而后启动这两个项目,先启动config。
能够看到eureka-server 成功的从config 中加载到了配置文件并启动了项目。
就这样简单的一个配置中心就已经实现了,最后说一个,既然咱们有配置中心,那咱们按在项目自己的application.properties 写的配置会加载么?答案是会加载的,至于比配置中心先加载仍是后加载,我我的偏向于后加载,在application.properties 中写的属性能够覆盖配置中心中的属性。可是建议,依然使用了配置中心,就但愿将全部的配置都放到配置中内心面,不要单独的在项目中新增配置,这样会增长管理的成本。
代码上传到github:
https://github.com/QuellanAn/SpringCloud
后续加油♡
欢迎你们关注我的公众号 "程序员爱酸奶"
分享各类学习资料,包含java,linux,大数据等。资料包含视频文档以及源码,同时分享本人及投递的优质技术博文。
若是你们喜欢记得关注和分享哟❤