博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringCloud Finchley 实战入门(基于springBoot 2.0.3)【八 config 微服务配置中心】
阅读量:6378 次
发布时间:2019-06-23

本文共 7544 字,大约阅读时间需要 25 分钟。

spring cloud config

spring cloud config是spring cloud团队创建的一个全新的项目,用来为分布式系统中的基础设施和微服务应用提供集中化的配置支持。他分为服务端和客户端两部分。其中服务端也称为分布式式配置中心,它是一个独立的微服务应用,用来连接配置仓库的并为客户端提供获取配置信息,加密、解密等访问接口。而客户端则是微服务架构中的各个微服务应用和基础设施。

入门实例

这里我们会创建一个基于Git存储的分布式配置中心,并且在客户端演示如何通过配置指定的微服务应用所属的配置中心,以及让其能够通过配置中心获取配置信息并绑定到代码中。

说先我们在github上面先创建一个配置文件存储的仓库"config-repo",创建完成后新建spring_cloud_in_action/config-repo的目录。

在config-repo目录下面新建"didispace.properties"、
"didispace-dev.properties"、"didispace-prod.properties"、"didispace-test.properties";
然后在这4个文件中均设置一个from属性,并且为每个配置文件设置不同的值:

from=git-default-2.0from=git-dev-2.0from=git-prod-2.0from=git-test-2.0
img_b222c11922a1099eb4fa7e3239a77435.png
1532672579949.png

对应对应github上面的目录:

img_a45ea5ff6f207732777fb42e16f44f32.png
1532672654269.png

到这里,我们配置文件的仓库就已经配置好了。我们继续回到spring cloud的项目中;

建一个spring boot的module,并且命名为"";创建的过程中,我们选择eureka-server和config的组件依赖。

img_b2458a6f8efb20c8d4eff42cef1a0319.png
1532672208369.png

pom.xml如下:

4.0.0
com.example
eureka-config-git
0.0.1-SNAPSHOT
jar
eureka-config-git
Demo project for Spring Boot
org.springframework.boot
spring-boot-starter-parent
2.0.3.RELEASE
UTF-8
UTF-8
1.8
Finchley.RELEASE
org.springframework.cloud
spring-cloud-config-server
org.springframework.cloud
spring-cloud-starter-netflix-eureka-server
org.springframework.boot
spring-boot-starter-test
test
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
org.springframework.boot
spring-boot-maven-plugin

application.yml配置:

spring:  application:    name: config-server-git  cloud:    config:      server:        git:          uri: https://github.com/ChinPangLung/config-repo #git仓库的地址;file://${user.name}/config-repo这是本地文件路径配置的方式,只限于用于开发使用          searchPaths: spring_cloud_in_action/config-repo          username: XXXXXXX  #这里对应仓库地址的账号密码          password: XXXXXXX      discovery:        enabled: trueserver:  port: 7001eureka:  client:      serviceUrl:        defaultZone: http://peer1:8762/eureka/,http://peer2:8763/eureka/

spring.cloud.config.server.git.uri 表示我们上面再GitHub上创建的config-repo仓库地址

spring.cloud.config.server.git.searchPaths 表示配置文件存放查询的地址
spring.cloud.config.server.git.username 表示我们的github的账号 (大家修改成自己对应的账号密码就行了)
spring.cloud.config.server.git.password 表示我们github的密码

项目的主类添加@EnableConfigServer注解

@SpringBootApplication@EnableConfigServerpublic class EurekaConfigGitApplication {    public static void main(String[] args) {        SpringApplication.run(EurekaConfigGitApplication.class, args);    }}

到这里我们的配置服务中心就已经基本的搭建完成,在eureka注册中心,启动的情况下,我们运行该项目,如果没有报错,那就说明我们的配置是没有问题的。

完成了这些准备工作之后,我们就可以通过浏览器、POSTMAN或CURL等工具直接来访问到我们的配置内容了。访问配置信息的URL与配置文件的映射关系如下:

  • /{application}/{profile}[/{label}]
  • /{application}-{profile}.yml
  • /{label}/{application}-{profile}.yml
  • /{application}-{profile}.properties
  • /{label}/{application}-{profile}.properties
    上面的url会映射{application}-{profile}.properties对应的配置文件,其中{label}对应Git上不同的分支,默认为master。我们可以尝试构造不同的url来访问不同的配置内容,比如,要访问master分支,didisapce应用的dev环境,就可以访问这个url:
    可以得到以下的返回:
    img_ed12f74796739e014edc4cbb7857cbe1.png
    1532674051553.png

完成了上述的验证后,我们就可以创建一个客户端来映射服务配置中心的配置了。

创建一个spring boot的module,命名为"eureka-config-client"

img_057313936a9dcb401f6a71ff98d1716e.png
1532674210897.png
4.0.0
com.example
eureka-config-client
0.0.1-SNAPSHOT
jar
eureka-config-client
Demo project for Spring Boot
org.springframework.boot
spring-boot-starter-parent
2.0.3.RELEASE
UTF-8
UTF-8
1.8
Finchley.RELEASE
org.springframework.boot
spring-boot-starter-web
org.springframework.cloud
spring-cloud-starter-config
org.springframework.cloud
spring-cloud-starter-netflix-eureka-server
org.springframework.boot
spring-boot-starter-test
test
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
org.springframework.boot
spring-boot-maven-plugin

application.yml配置:

spring:  application:    name: config-clientserver:  port: 7002

创建一个"bootstrap.yml"文件,配置如下:

spring:  cloud:    config:      profile: dev #dev开发环境配置文件,test测试环境配置文件,pro正式环境文件      label: master #git仓库对应的分支名称 config-label-test#      uri: http://localhost:7001/ #config-server      name: didispace      discovery:        serviceId: config-server-git #基于服务注册发现的方式查找        enabled: trueeureka:  client:      serviceUrl:        defaultZone: http://peer1:8762/eureka/,http://peer2:8763/eureka/#注册中心eureka.client.service-url.defaultZone = 一定要放在boostrap文件中,不然启动会报错

在项目的中类中写一个from接口:

@SpringBootApplication@RestController@RefreshScopepublic class EurekaConfigClientApplication {    public static void main(String[] args) {        SpringApplication.run(EurekaConfigClientApplication.class, args);    }    @Value("${from}")    private String from;    @RequestMapping(value = "from")    public String getFrom() {        return this.from;    }}

启动项目,然后访问可以得到以下的返回:

img_3a59bed16e65f84e56917003a914fd01.png
1532674897020.png

这个数据就是config-client项目获取服务配置中心里对应指向的GitHub仓库配置文件的值。

而且我们观察"eureka-config-git"项目控制台的输出

img_dfe9512d9cb0bfb3d2e68bfa7842cec4.png
1532675044524.png

我们可以知道,服务配置中心在获取GitHub上面的配置文件返回config-client时,同时会缓存一分数据在本地的。这样就算因为其他的问题导致配置服务中心获取不到GitHub仓库的数据时,config-client也能有缓存的数据返回。

这样我们就完成了分布式配置中心的搭建了。其实上面的config-client我们在实际的开发中,就是相当于一个具体的微服务实例应用了。

下面一篇我们将搭建spring cloud bus 服务总线。

转载地址:http://snxqa.baihongyu.com/

你可能感兴趣的文章
友元函数和友元类
查看>>
SpringMVC中CRUD实例
查看>>
java-jmx使用
查看>>
Win8Metro(C#)数字图像处理--2.15图像霓虹效果
查看>>
Expo大作战(十七)--expo结合哨兵(sentry)进行错误异常记录
查看>>
vue.js入门学习
查看>>
第8件事 3步打造产品的独特气质
查看>>
debug-stripped.ap_' specified for property 'resourceFile' does not exist
查看>>
利用MapReduce计算平均数
查看>>
scala-05-map映射
查看>>
Spring Boot - how to configure port
查看>>
右键添加复制路径选项
查看>>
DocFetcher 本机文件搜索工具
查看>>
ambassador 学习三 限速处理
查看>>
HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
查看>>
数据结构:最小生成树--Kruskal算法
查看>>
Swift_1_基本数据类型
查看>>
VS注释与取消注释快捷键
查看>>
深入解析Vuex实战总结
查看>>
流水落花春去也
查看>>