把密钥放在配置中心进行保密,配置中心的代码由专人进行维护。(安全性)
配置中心
http://192.168.110.123:7892/com.pica.cloud.trade/dev/publish。 测试配置中心是否通?
url组成:Eureka Server上Config Server的地址,组名,环境名,分支名。
不是git代码的地址。
Config配置中心
在配置中心更新配置,重新启动微服务读取配置即可;(重新启动配置中心---------->重新启动业务微服务)
配置了好几次都没有配置成功,高可用配置中心还是要好好学一下的。
找不到确保配置中心是否存在对应的配置,或者git上存在对应的配置。
报错信息:Could not resolve placeholder...,说明在配置中心找不到对应的配置,键值对信息。
Spring Config Server
1)修改对应环境的配置后,需要重新启动配置中心;
2)配置中心修改后,需要重新启动对应的微服务,才能重新读取配置(因为只有在微服务启动的时候才会拉取配置,如果微服务不重新启动,就还是原来的配置,读取不到更新的配置)。
config client----->config server----->git
在git上修改了配置文件,config-server需要重新启动加载配置,config-client也需要重新启动拉取配置。
spring.config.name=configserver
spring.application.name=config-server 配置中心的名称,Eureka Server上的名称
如何通过接口的形式从配置中心读取配置,测试配置中心是否正常?
http://192.168.110.123:7892/com.pica.cloud.base.api/dev/publish
配置中心地址,组名称,环境名称,分支名称。 看看能不能拿到配置信息?
由于spring cloud config中默认使用git,所以我们只需要在config server中的application.properties中设置spring.cloud.config.server.git.uri属性即可。
config默认Git加载:通过spring.cloud.config.server.git.uri指定配置信息存储的git地址。
多仓库配置
config server除了可以通过application和profile模式来匹配配置仓库之外,还支持通过带有通配符的表达式来匹配配置仓库,以实现更为复杂的配置要求。并且当我们有多个匹配规则的时候,还可以通过逗号来分割多个{application}/{profile}配置规则。
pica-cloud-ecosystem:这是项目名称
仓库的匹配规则,远程git仓库地址,强制拉取配置。多仓库配置:一个配置中心对应多个项目的配置;
spring.cloud.config.name=com.pica.cloud.base.doctor 访问,获取,激活哪个项目的配置文件。 (拉取哪个组下面的配置)
http://192.168.110.53/com.pica.cloud.foundation.ecosystem/pica-cloud-configuration.git
http://106.14.119.15:7892/com.pica.cloud.base.api/prod/publish
配置中心:master分支也要进行生态圈的配置,两个分支都要处理;
测试从Config Server获取配置
http://192.168.110.123:7892/com.pica.cloud.foundation/dev/publish
http://192.168.110.122:7892/com.pica.cloud.foundation/dev/publish
spring.cloud.config.name=com.pica.cloud.foundation.ecosystem 定义匹配规则(组名)
spring.cloud.config.profile=dev 动态获取环境的配置 dev test prod
spring.cloud.config.label=publish 指明远程仓库的分支
spring.cloud.config.discovery.enabled=true 启用config-client
spring.cloud.config.discovery.service-id=config-server config-server的application.name。
spring.cloud.config.discovery.service-id:指定配置中心的service-id,便于扩展为高可用配置集群。
@EnableConfigServer
spring.cloud.config.server.git.uri:项目配置所在的git仓库地址
在配置中配置数据源信息、项目信息。
配置中心自动刷新功能
1)新建配置中心。
2)实现配置自动刷新功能。
在gitlab里面创建项目存储配置文件。
http://localhost:9000//doctor-dev。 master分支的doctor-dev环境。
每个微服务在gitlab上都有一个对应的组;每个组下包配置文件和项目代码;
简单理解就是一个git地址对应一个文件夹,这个文件夹中全部都是当前项目的配置文件;
我的理解是:所有项目的配置文件都在一个git项目中,但是这样不安全,开发能够修改所有项目的配置文件。
组名: com.pica.cloud.foundation
项目名:pica-cloud-ecosystem
包名:com.pica.cloud.foundation.ecossystem
当前微服务要拉取这个组下的配置。
新添加的微服务,为什么要重新启动配置中心,然后重新启动微服务?
如何通过url获取配置中心的配置?
配置不生效,拉不到
必须要在配置中心里面配置新的微服务的git路径。
http://192.168.110.123:7892/com.pica.cloud.permission/dev/publish
经常遇见的错误error message:
No instances found of configserver (config-server)
Cannot determine embedded database driver class for database type NONE
当前服务启动的时候,没有拉取到config server的配置。
如何判断配置中心是否挂掉? 直接接口访问即可