公司一款分布式软件,居然玩出了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_第1张图片


可以编辑disconf数据库的user表,对不同项目进行授权,单独建立账户,让每个程序员只能看到自己负责的项目,以免误点到其他同事的项目配置,devops工程师掌握admin账户即可。环境越多,模块越多,这货的优势越大。不过毕竟是free的东西,有些需要改进的地方,在此就不细说了。anyway,感谢百度开源了这么个东西。