分布式配置中心

Posted syjp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式配置中心相关的知识,希望对你有一定的参考价值。

1、话题引入:

如果配置文件全部放在resources目录下,管理起来非常复杂,所以采用分布式配置中心,放在git上

 

2、产生背景:

在微服务中如果使用传统的方式管理配置文件,配置文件管理器非常复杂;

如果生产环境配置文件,可能需要发生改变的时候,重新打war,重新读取配置信息在jvm内存中;

 

3、什么是分布式配置中心:

在微服务中使用同一个服务器管理所有服务配置文件信息,能够实现后台可管理,当服务器正在运行时,如果配置文件需要发生改变,可以实现不需要重启服务器实时更改配置文件信息。

 

4、分布式配置中心框架

1)阿波罗,携程的,有图形界面可管理配置文件信息,配置文件信息存放在数据库里面

2)SpringCoud Config 没有后台可管理分布式配置中心,配置文件信息存放在版本控制器里面(git/svn)

3)Zookeeper 持久节点+事件通知

 

5、搭建分布式配置中心所需要的组件:

1)web管理系统,后台可以使用图形界面管理配置文件

2)存放分布式配置文件的服务器(持久存储服务器),使用版本控制器

3)ConfigServer缓存配置文件服务器(临时缓存存放)

4)ConfigClient读取ConfigServer配置文件信息

 

6、git上文件命名规则

1)git环境上文件夹以项目进行区分

member_config 会员服务配置文件

order_config 订单服务配置文件

2)公司项目中环境是如何区分

dev 开发环境

sit 测试环境

pre 预发布环境

prd 准生产环境

3)客户端的命名要和git上的服务名称一样,因为系统会以该命名为前缀去git上面搜索

配置文件命名规则:服务名称-环境.properties

 

7、刷新配置文件

1)默认情况下不能及时的获取实时变更的配置文件信息,springcloud分布式配置中心可以采用手动刷新或者自动刷新

手动刷新---需要人工调用接口,读取最新配置文件(监控中心)--建议使用

自动刷新---消息总线进行实时通知,springbus --不建议使用,更加消耗性能

两者都不需要重启服务器

2)要实现手动刷新,要用到actuator,在yml中配置,然后在Controller上面加上@RefreshScope注解;

还要手动发一个post请求:http://localhost:9300/actuator/refresh

=》一般来说,会将配置信息放在一个类上面,把@RefreshScope注解放在那个类上面就可以了;肯定不会在所有Controller上面加注解的;

 

问题

1)config-server搭建好后,sit文件访问有内容,而prd访问没内容

--》可能是gitee的问题,删掉重新建一个就可以访问了;这里不能访问,后面的config-client也是不能访问的;

注意这个config-client的yml文件为prd

2)在config-client启动后,如果某个配置文件不存在(服务名/环境名错误),那么程序就会立马报错;

 

以上是关于分布式配置中心的主要内容,如果未能解决你的问题,请参考以下文章

Apollo - 分布式配置中心

分布式配置中心 携程 apollo

基于Nacos构建分布式配置中心

重学SpringCloud系列四之分布式配置中心---上

分布式配置中心Apollo

分布式配置中心201902