{"id":13452659,"url":"https://github.com/Qihoo360/QConf","last_synced_at":"2025-03-23T21:34:33.330Z","repository":{"id":29052707,"uuid":"32580424","full_name":"Qihoo360/QConf","owner":"Qihoo360","description":"Qihoo Distributed Configuration Management System","archived":false,"fork":false,"pushed_at":"2024-02-02T08:35:23.000Z","size":8495,"stargazers_count":1865,"open_issues_count":28,"forks_count":535,"subscribers_count":206,"default_branch":"master","last_synced_at":"2025-03-16T20:07:39.423Z","etag":null,"topics":["configuration","configuration-cache","configuration-file","configuration-management","configuration-storage","qconf","zookeeper"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Qihoo360.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-03-20T11:35:35.000Z","updated_at":"2025-03-15T13:40:04.000Z","dependencies_parsed_at":"2024-05-29T12:13:49.178Z","dependency_job_id":"ddbfc76f-e3ad-45ad-891f-70a1b60489b8","html_url":"https://github.com/Qihoo360/QConf","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Qihoo360%2FQConf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Qihoo360%2FQConf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Qihoo360%2FQConf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Qihoo360%2FQConf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Qihoo360","download_url":"https://codeload.github.com/Qihoo360/QConf/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245168819,"owners_count":20571800,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["configuration","configuration-cache","configuration-file","configuration-management","configuration-storage","qconf","zookeeper"],"created_at":"2024-07-31T08:00:19.536Z","updated_at":"2025-03-23T21:34:33.278Z","avatar_url":"https://github.com/Qihoo360.png","language":"C++","funding_links":[],"categories":["C++"],"sub_categories":[],"readme":"QConf\n=====\n\n[![Build Status](https://travis-ci.org/Qihoo360/QConf.svg?branch=master)](https://travis-ci.org/Qihoo360/QConf)\n\nWe have build another interesting proect [pika](https://github.com/Qihoo360/pika). Pika is a nosql compatible with redis protocol with huge storage space. You can have a try.\n\n## Introduction [中文](https://github.com/Qihoo360/QConf/blob/master/README_ZH.md)\n\nQConf is a Distributed Configuration Management System!\nA 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.\n\n## Features\n* Changes to any configuration will be synchronised to all client machines in real-time.\n* High query efficiency.\n* Convenient deployment and simple interface.\n* High robustness and  fault-tolerance.\n* support c/c++, shell, php, python, lua, java, go, node and etc.\n\n## Install\nThe QConf is built using CMake (version 2.6 or newer).\n\nOn most systems you can build the library using the following commands:\n``` shell\nmkdir build \u0026\u0026 cd build\ncmake ..\nmake\nmake install\n```\nAlternatively you can also point the CMake GUI tool to the CMakeLists.txt file.\n\nTo install the QConf you can specify the install prefix by setting:\n``` shell\ncmake .. -DCMAKE_INSTALL_PREFIX=/install/prefix\n```\n\n## Usage\n\n - **Set up Zookeeper servers**, create or modify znode with Zookeeper Client\n\n\t More information about Zookeper: [ZooKeeper Getting Started Guide](http://zookeeper.apache.org/doc/r3.3.3/zookeeperStarted.html)\n\t \n\n - **Register** the Zookeeper server address with QConf\n\n``` shell\nvi QCONF_INSTALL_PREFIX/conf/idc.conf\n```\n``` php\n  # all the zookeeper host configuration.\n  #[zookeeper]\n  \n  #zookeeper of idc 'test'\n  zookeeper.test=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183\n```\n - **Assign** local idc\n``` \necho test \u003e QCONF_INSTALL_PREFIX/conf/localidc #assign local idc to 'test'\n```\n - **Run** QConf\n\n``` shell\ncd QCONF_INSTALL_PREFIX/bin \u0026\u0026 sh agent-cmd.sh start\n```\n - **Code** to access QConf\n\n\n## Related\n* [zkdash](https://github.com/ireaderlab/zkdash) - An excellent dashboard for QConf or ZooKeeper provided by IReader Team\n\n\n## Performance\n1.   statergy\n * **running times** :  ten million times altogether\n * **data size** :      the size of value of each key is 1k\n * **test method** :  multi-processes are running at the same time, and get the elapsed time that ten million times are running\n * **machine** : Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz, 24 cores; 64G memory\n * **language** : c++\n2.   result\n * ![enter image description here](http://ww1.sinaimg.cn/bmiddle/69a9c739jw1eqgwvqxhhmj206207tdg5.jpg \"Result\")\n3. conclusion: \n * the lantency is 16μs\n * during multi-process, the QPS can reach one million\n \n## Example\n\n* **shell** \n``` shell\n    qconf get_conf /demo/node1   # get the value of '/demo/node1'\n```\n\n* **c/c++**\n``` c\n\t  // Init the qconf env\n      ret = qconf_init();\n      assert(QCONF_OK == ret);\n\n      // Get Conf value\n      char value[QCONF_CONF_BUF_MAX_LEN];\n      ret = qconf_get_conf(\"/demo/node1\", value, sizeof(value), NULL);\n      assert(QCONF_OK == ret);\n      \n      // Destroy qconf env\n      qconf_destroy();\n```\n\n## Document\n* [Getting Started](https://github.com/Qihoo360/QConf/blob/master/doc/QConf%20Getting%20Started%20Guide.md) - a tutorial-style guide for developers to install, run, and program to QConf\n* [Implement](http://catkang.github.io/2015/06/23/qconf.html)\n* [wiki](https://github.com/Qihoo360/QConf/wiki)\n* [qconf video guide](https://github.com/Qihoo360/QConf/wiki/QConf-%E7%AE%80%E6%98%93%E9%83%A8%E7%BD%B2%E5%92%8C%E4%BD%BF%E7%94%A8)\n\n## Contact\n\n* Email: g-qconf@list.qihoo.net\n* QQ Group: 438042718 \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FQihoo360%2FQConf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FQihoo360%2FQConf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FQihoo360%2FQConf/lists"}