360 內部使用的分布式配置管理工具:QConf

dy223 9年前發布 | 30K 次閱讀 QConf

簡介

QConf 是一個分布式配置管理工具。 用來替代傳統的配置文件,使得配置信息和程序代碼分離,同時配置變化能夠實時同步到客戶端,而且保證用戶高效讀取配置,這使的工程師從瑣碎的配置修改、代碼提交、配置上線流程中解放出來,極大地簡化了配置管理工作。

特點

  • 一處修改,所有機器實時同步更新
  • 高效讀取配置
  • 安裝部署方便,使用簡單
  • 服務器宕機、網絡中斷、集群遷移等異常情況對用戶透明
  • 支持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();

文檔

聯系方式

項目主頁:http://www.baiduhome.net/lib/view/home/1427359843918

 本文由用戶 dy223 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!