QConf 使用场景 - Qihoo360/QConf GitHub Wiki
-
简单配置
例如 “用户名”,“密码” 等在程序使用到的配置项,这些配置在线上运行的时候,可能会随着时间变化或者其他因素需要修改,这个时候就可以使用qconf 来统一管理,并且修改过程后会自动同步到客户机器上,业务程序在下次就能够读取到新的配置;
-
分集群配置
在业务运行时,有可能遇到 测试环境,开发环境,线上环境等等,即使是线上环境也可能需要有多个不同集群,针对这种情况,qconf 保证用户的代码是完全一样,需要做的是,针对不同的环境搭建个一套后台服务器,然后在 idc.conf 配置文件中添加相应的服务器信息,如:
zookeeepr.test=10.10.10.10:2181,11.11.11.11:2181,12.12.12.12:2181
zookeeper.dev=20.20.20.20:2181,21.21.21.21:2181,22.22.22.22:2181
zookeeper.online=30.30.30.30:2181,31.31.31.31:2181,32.32.32.32:2181
然后在将每个环境下的localidc指定为对应的集群名称,如测试环境修改为test,开发环境修改为dev,线上环境修改为online;
然后,业务就可以分别在不同的集群中修改配置,并且只会更新对应集群的配置;
-
开关控制
在程序中,想动态控制某个操作是否发生,这里就可以将这个开关信息存入qconf中;
-
模块串行化
业务在运行过程中,可能有多个模块配合运行,而这些模块流程即可以在qconf中配置;
例如:有四个模块 a、b、c、d,可以将a的配置中存入下一个模块的名称如可能为b,当条件环境变化后,可以将a的下一个模块修改为新模块;
-
服务信息
业务可以使用mongodb 等服务,而这些服务往往是一个集群,该mongodb集群中添加或减少一台服务,业务都可能要感知;而通过qconf能够返回那些可用的服务,这样业务就程序中就只用每次调用时使用qconf获得ip信息即可,而dba也能够随时添加或减少机器;
-
配置文件
像 nginx 等配置文件都可以使用qconf来存储,在存储的时候,可以将配置文件的信息整体存入到qconf的单节点下或者将配置中每个配置项都抽取出来各自作为一个节点,然后可以采用下面两种方式更新:
1) qconf 中提供执行脚本的功能,当用户的配置更新后,可以直接执行脚本来更新
2) 定期获取配置并更新配置文件(采用crontab的方式)