公司一款分布式软件,居然玩出了6个环境:
1、dev
2、test
3、sit
4、stage
5、uat
6、prd
这每个环境都有一堆模块,每个模块都要连接mq、zookeeper、redis、mysql等,如何管理这些配置?别告诉我你要登录服务器一台台修改哈,那样会出大乱子的。推荐disconf,模块启动的时候加一个参数即可,如下:
java -Ddisconf.conf=/app/hrt/conf/goods/disconf.properties
disconf.properties内容如下:
#这里定义开关,为true表示打开
disconf.enable.remote.conf=true
#定义disconf服务端地址
disconf.conf_server_host=10.0.53.12:8081
#定义配置版本,与disconf上的要对应起来
disconf.version=1.0
#模块名称,与disconf中的app名称也要对应起来
disconf.app=hrt-goods
#环境名称,很重要,不同环境靠这个区分
disconf.env=sit
disconf.ignore=
disconf.conf_server_url_retry_times=2
disconf.conf_server_url_retry_sleep_seconds=1
disconf.user_define_download_dir=/app/hrt/conf/goods
disconf.enable_local_download_dir_in_class_path=true
剩下的就是程序员的工作了,模块与disconf同步成功后,会把配置文件下载到disconf.user_define_download_dir定义的/app/hrt/conf/goods目录下,再看看disconf界面,电商后台的goods模块已经和disconf同步成功了,以后不管是查询配置还是修改配置都十分方便了:
可以编辑disconf数据库的user表,对不同项目进行授权,单独建立账户,让每个程序员只能看到自己负责的项目,以免误点到其他同事的项目配置,devops工程师掌握admin账户即可。环境越多,模块越多,这货的优势越大。不过毕竟是free的东西,有些需要改进的地方,在此就不细说了。anyway,感谢百度开源了这么个东西。
转载于:https://blog.51cto.com/weikle/1875578