All Projects → Qihoo360 → Qconf

Qihoo360 / Qconf

Licence: other
Qihoo Distributed Configuration Management System

Programming Languages

C++
36643 projects - #6 most used programming language
Roff
2310 projects
c
50402 projects - #5 most used programming language
shell
77523 projects
Makefile
30231 projects
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Qconf

libconfini
Yet another INI parser
Stars: ✭ 106 (-94.25%)
Mutual labels:  configuration, configuration-management, configuration-file
parse it
A python library for parsing multiple types of config files, envvars & command line arguments that takes the headache out of setting app configurations.
Stars: ✭ 86 (-95.33%)
Mutual labels:  configuration, configuration-management, configuration-file
Centraldogma
Highly-available version-controlled service configuration repository based on Git, ZooKeeper and HTTP/2
Stars: ✭ 378 (-79.49%)
Mutual labels:  zookeeper, configuration-management, configuration
Configuration
Library for setting values to structs' fields from env, flags, files or default tag
Stars: ✭ 37 (-97.99%)
Mutual labels:  configuration-management, configuration
Config
Easiest way to add multi-environment yaml settings to Rails, Sinatra, Pandrino and other Ruby projects.
Stars: ✭ 1,821 (-1.19%)
Mutual labels:  configuration-management, configuration
Strictyaml
Type-safe YAML parser and validator.
Stars: ✭ 836 (-54.64%)
Mutual labels:  configuration-management, configuration
Xxl Conf
A lightweight distributed configuration management platform. (分布式配置管理平台XXL-CONF)
Stars: ✭ 619 (-66.41%)
Mutual labels:  zookeeper, configuration
Night Config
Powerful java configuration library for toml, yaml, hocon, json and in-memory configurations
Stars: ✭ 93 (-94.95%)
Mutual labels:  configuration-management, configuration
Node No Config
Config and resource loader
Stars: ✭ 45 (-97.56%)
Mutual labels:  configuration-management, configuration
Zookeeper
Apache ZooKeeper
Stars: ✭ 10,061 (+445.9%)
Mutual labels:  zookeeper, configuration-management
Genie
Distributed Big Data Orchestration Service
Stars: ✭ 1,544 (-16.22%)
Mutual labels:  configuration-management, configuration
Apollo
Apollo is a reliable configuration management system suitable for microservice configuration management scenarios.
Stars: ✭ 26,052 (+1313.56%)
Mutual labels:  configuration-management, configuration
Ini Parser
Read/Write an INI file the easy way!
Stars: ✭ 643 (-65.11%)
Mutual labels:  configuration-management, configuration
Config Rs
⚙️ Layered configuration system for Rust applications (with strong support for 12-factor applications).
Stars: ✭ 915 (-50.35%)
Mutual labels:  configuration-management, configuration
Ohai
Ohai profiles your system and emits JSON
Stars: ✭ 641 (-65.22%)
Mutual labels:  configuration-management, configuration
Envkey App
Secure, human-friendly, cross-platform secrets and config.
Stars: ✭ 83 (-95.5%)
Mutual labels:  configuration-management, configuration
Coulomb
coulomb: unit analysis for Scala
Stars: ✭ 109 (-94.09%)
Mutual labels:  configuration-management, configuration
Dynaconf
Configuration Management for Python ⚙
Stars: ✭ 2,082 (+12.97%)
Mutual labels:  configuration-management, configuration
Node Convict
Featureful configuration management library for Node.js
Stars: ✭ 1,855 (+0.65%)
Mutual labels:  configuration-management, configuration
Koanf
Light weight, extensible configuration management library for Go. Built in support for JSON, TOML, YAML, env, command line, file, S3 etc. Alternative to viper.
Stars: ✭ 450 (-75.58%)
Mutual labels:  configuration-management, configuration

QConf

Build Status

We have build another interesting proect pika. Pika is a nosql compatible with redis protocol with huge storage space. You can have a try.

Introduction 中文

QConf is a Distributed Configuration Management System! A better replacement of the traditional configuration file. As designed, configuration items which is constantly accessed and modified should be completely separated with application code, and QConf is where it should be.

Features

  • Changes to any configuration will be synchronised to all client machines in real-time.
  • High query efficiency.
  • Convenient deployment and simple interface.
  • High robustness and fault-tolerance.
  • support c/c++, shell, php, python, lua, java, go, node and etc.

Install

The QConf is built using CMake (version 2.6 or newer).

On most systems you can build the library using the following commands:

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

Alternatively you can also point the CMake GUI tool to the CMakeLists.txt file.

To install the QConf you can specify the install prefix by setting:

cmake .. -DCMAKE_INSTALL_PREFIX=/install/prefix

Usage

  • Set up Zookeeper servers, create or modify znode with Zookeeper Client

    More information about Zookeper: ZooKeeper Getting Started Guide

  • Register the Zookeeper server address with QConf

vi QCONF_INSTALL_PREFIX/conf/idc.conf
  # all the zookeeper host configuration.
  #[zookeeper]
  
  #zookeeper of idc 'test'
  zookeeper.test=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
  • Assign local idc
echo test > QCONF_INSTALL_PREFIX/conf/localidc #assign local idc to 'test'
  • Run QConf
cd QCONF_INSTALL_PREFIX/bin && sh agent-cmd.sh start
  • Code to access QConf

Related

  • zkdash - An excellent dashboard for QConf or ZooKeeper provided by IReader Team

Performance

  1. statergy
  • running times : ten million times altogether
  • data size : the size of value of each key is 1k
  • test method : multi-processes are running at the same time, and get the elapsed time that ten million times are running
  • machine : Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz, 24 cores; 64G memory
  • language : c++
  1. result
  • enter image description here
  1. conclusion:
  • the lantency is 16μs
  • during multi-process, the QPS can reach one million

Example

  • shell
    qconf get_conf /demo/node1   # get the value of '/demo/node1'
  • c/c++
	  // 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();

Document

Contact

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].