分布式配置中心
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启动后,如果某个配置文件不存在(服务名/环境名错误),那么程序就会立马报错;
以上是关于分布式配置中心的主要内容,如果未能解决你的问题,请参考以下文章