博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springcloud的分布式配置Config
阅读量:5953 次
发布时间:2019-06-19

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

 

1、为什么要统一配置管理?

微服务由多个服务构成,多个服务多个配置,则对这些配置需要集中管理、不同环境不同配置,运行期间动态调整,自动刷新。

统一管理微服务的配置:分布式配置管理的一些组件:

zookeeper或者consul或者config。百度的:discof,阿里的:diamond,携程的:apollo。

2、springcloud config:

springcloud config为分布式系统提供了服务器端和客户端的支持,包括config server和config client。config server是一个可横向扩展、集中式的配置服务器。默认使用git存储配置内容。config client是server的客户端,用于操作server的配置属性。

3、config  server的配置:

 

注解:

配置文件:

 

 

 

配置完server后,HTTP如何访问码云里面的文件呢:如下几几种方式:

application即你配置的application的名字,这里的application可以任意指定,都会从git远程读取文件。

profile即配置的环境,即这里git里面的哪个文件,比如application.yml还是foobar.yml这些,一般都是先根据profile的名称寻找文件,如果没有改文件,则默认从application中寻找,如果没有application则停止寻找,寻找失败。即有个默认的顺序的。

label指的是git里面的master还是branch这些。

4、config client的配置:

 

5、问题:client读取server中的配置文件:client先连接server,然后server再连接git仓库中的配置文件

(1)当client的配置文件为application.yml的时候,报错:

不能读取配置文件中的@Value的值

 

为什么?

springcloud里面有个启动上下文

 

这个作用是:用来加载远端的配置,这里指的是server中的配置。

加载顺序:bootstrap  ----》config server----》application,这样的加载顺序,所以利用bootstrap来连接server加载远程配置,然后加载application。

如果我们配置为application是加载不了远端服务的。

但是:

springclouod版本:Finchley.M8这个版本中,用application.yml和bootstrap.yml中作用是一样的。

(2)本地文件与远程文件名称一致,是选择本地的还是远程?

答案:远程的,因为一旦加载,就按照远程的为准。

 

6、多个服务,多个配置仓库,分布式配置,分布式管理理念---即一个应用一个仓库,一种环境一个仓库

官方推荐使用git仓库,这里git的好处:版本审计,分布式比较简单。

一个应用一个仓库的例子:

利用通配符来进行设置,将仓库的名称与application应用的名称设置为一样的,这样访问的时候就可以区分到底是哪个应用的仓库。

比如一个仓库设置为simple,一个仓库设置为special。

则利用上面的通配符,可以访问不同的仓库:

 

 修改为special即special的仓库。

7、模式匹配与配置多仓库

 

 

 不怎么建议使用,先了解吧。

7、高可用的配置管理中心

这里参考方大神的博客吧:

http://blog.csdn.net/forezp/article/details/70037513

8、git仓库的配置属性手动和自动刷新

即git仓库中的属性修改,代码中自动更新这些属性,且在生产环境不停机。

要实现自动刷新,config server服务端是不需要更改的,只需要在client服务端修改即可。

(1)首先看下手动刷新::

加注解:加依赖:

 原因::

 

这个是建立在spring-boot-actuator基础上面的,所以我们需要加依赖。

 原因:

 刷新的方式属于手动刷新:

上面配置完成后,我们需要在postman或者curl中进行:http://localhost:3536/refresh要通过链接来刷新,即通过rest端点来刷新的,效率太低了。

注意:@RefreshScope与@Configuration不能一起使用,否则会产生不可思议的问题,个人观点。

注意一个问题:我们在使用链接刷新的时候,在postman中测试,提示401错误,

Full authentication is required to access this resource

即没有权限,这里我们需要进行设置:

http://blog.csdn.net/ruben95001/article/details/76921090?locationNum=2&fps=1

 

 

(2)自动刷新见下一篇博客

 

  

你可能感兴趣的文章
Vuex学习
查看>>
bootstrap - navbar
查看>>
切图崽的自我修养-[ES6] 编程风格规范
查看>>
[React Native Android 安利系列]样式与布局的书写
查看>>
利用dxflib读写cad文件
查看>>
服务器迁移小记
查看>>
FastDFS存储服务器部署
查看>>
Android — 创建和修改 Fragment 的方法及相关注意事项
查看>>
流程控制: jQ Deferred 与 ES6 Promise 使用新手向入坑!
查看>>
swift基础之_swift调用OC/OC调用swift
查看>>
Devexpress 15.1.8 Breaking Changes
查看>>
推荐JS插件:imagesLoaded,监测图片加载情况并提供相应的事件(加载成功/失败)...
查看>>
Java B2B2C多用户商城 springcloud架构- common-service 项目构建过程(七)
查看>>
杨老师课堂之ArrayList集合常用方法解析
查看>>
ElasticSearch Client详解
查看>>
新零售讲堂之时代下的传统零售业,何去何从?
查看>>
c++读取和写入TXT文件的整理
查看>>
深入动态人脸识别小场景应用,2019年或将迎来爆发期
查看>>
Ionic2 下处理 Android 设备下返回按钮的事件
查看>>
linux基础--grep以及模式正则表达式
查看>>