分布式配置管理工具 QConf

BSD
C/C++
跨平台
360
2015-03-26
孔小菜

QConf 是奇虎 360 内部分布式配置管理工具。用来替代传统的配置文件,使得配置信息和程序代码分离,同时配置变化能够实时同步到客户端,而且保证用户高效读取配置,这使的工程师从琐碎的配置修改、代码提交、配置上线流程中解放出来,极大地简化了配置管理工作。

特点

  • 一处修改,所有机器实时同步更新

  • 高效读取配置

  • 安装部署方便,使用简单

  • 服务器宕机、网络中断、集群迁移等异常情况对用户透明

  • 支持c/c++、shell、php、python、lua 等语言

编译安装

QConf采用CMake进行构建(CMake 版本 2.6及以上)

可以使用以下命令完成QConf的编译安装:

mkdir build && cd build
cmake ..
make
make install

你也可以在CMake图形界面工具中导入CMakeList.txt 文件

使用如下配置可以指定QConf的安装目录:

cmake .. -DCMAKE_INSTALL_PREFIX=/install/prefix

使用

  • 搭建Zookeeper集群,并通过Zookeeper Client 新建修改配置

    关于zookeeper使用的更多信息: ZooKeeper Getting Started Guide

  • 在QConf 配置文件中配置Zookeeper集群地址

vi QCONF_INSTALL_PREFIX/conf/idc.conf
  #all the zookeeper host configuration.  #[zookeeper]  zookeeper.test=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183 #test机房zookeeper配置
  • 在QConf配置文件中指定本地机房

echo test > QCONF_INSTALL_PREFIX/conf/localidc #指定本地机房为test
  • 启动QConf

cd QCONF_INSTALL_PREFIX/bin && sh agent-cmd.sh start
  • 编写代码访问QConf

性能

  1. 测试策略

    • 测试次数 : 循环测试1000次,每次循环获取分别获取10000个不同key对应的值,总共取一千万次key

    • 测试数据 : 每个key对应的value的大小是1k

    • 测试方式 : 多进程测试时候,多个进程同时运行,然后截取其中一段时间,来记录各个进程运行取一千万次的总耗时

    • 测试机器 : Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz,  24核;64G memory

    • 测试语言 : c++

  2. 测试结果

    • enter image description here

  3. 结论

    • 单进程的延迟是16微秒左右

    • 在多进程的情况下,QPS 能够达到百万

使用样例

      // Init the qconf env
      ret = qconf_init();      assert(QCONF_OK == ret);      // Get Conf value
      char value[QCONF_CONF_BUF_MAX_LEN];
      ret = qconf_get_conf("/demo/node1", value, sizeof(value), NULL);      assert(QCONF_OK == ret);      // Destroy qconf env
      qconf_destroy();
加载中

评论(1)

夜雨宵城
disconfig #QConf#

暂无资讯

暂无问答

朱超:集中式配置管理系统QConf

朱超:集中式配置管理系统QConf QConf是一个集中式配置管理工具,能实现配置信息对业务的完全透明化。通常情况下,每个业务服务器有自己的配置,当有配置需要变动的时候,所有的业务服务器都...

2015/01/14 15:43
195
0
编译Linux内核

1.需要先安装编译环境 进入 root 帐户: > su 输入密码 安装必要的工具: > apt-get install build-essential (安装 gcc, make 等) > apt-get install libncurses-dev (安装 make menuconfi...

07/10 11:02
13
0
编译Linux内核

1.需要先安装编译环境 进入 root 帐户: > su 输入密码 安装必要的工具: > apt-get install build-essential (安装 gcc, make 等) > apt-get install libncurses-dev (安装 make menuconfi...

2010/02/22 10:46
360
0
springcloud(六):配置中心git示例

随着线上项目变的日益庞大,每个项目都散落着各种配置文件,如果采用分布式的开发模式,需要的配置文件随着服务增加而不断增多。某一个基础服务信息变更,都会引起一系列的更新和重启,运维苦...

2018/08/13 15:45
32
0
分布式配置中心(spring cloud config)

随着线上项目变的日益庞大,每个项目都散落着各种配置文件,如果采用分布式的开发模式,需要的配置文件随着服务增加而不断增多。某一个基础服务信息变更,都会引起一系列的更新和重启,运维苦...

2018/07/24 10:57
56
0
【工具使用系列】关于MATLAB数据和函数的可视化,你需要知道的事

# 如何进行数据和函数的可视化 ## 二维曲线绘图 * plot的基本调用格式 * 曲线的色彩、线型和数据点型 * 图形控制 ## 三维曲线绘图 * plot3的基本调用格式 * 三维网格图和曲面图 ## 图形窗功能...

2018/01/21 12:46
10
0
【脚本语言系列】关于MATLAB数组及其运算,你需要知道的事

# 如何进行数组运算 ## 数值数组的生产和寻访 * 数值数组的生产 * 数值数组的寻访 ## 数组运算和矩阵运算 * 数组运算的常用函数 * 数组和矩阵运算 ## 非数和“空”数组 * 非数 * “空”数组 ...

2018/01/21 12:38
25
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部