我们团队开发了另外一个有意思的项目 pika, pika 是一个兼容redis 协议的大容量的存储, 用来解决redis 内存不够的问题, 欢迎大家试试
简介 English
QConf 是一个分布式配置管理工具。 用来替代传统的配置文件,使得配置信息和程序代码分离,同时配置变化能够实时同步到客户端,而且保证用户高效读取配置,这使的工程师从琐碎的配置修改、代码提交、配置上线流程中解放出来,极大地简化了配置管理工作。
- 一处修改,所有机器实时同步更新
- 高效读取配置
- 安装部署方便,使用简单
- 服务器宕机、网络中断、集群迁移等异常情况对用户透明
- 支持c/c++、shell、php、python、lua、java、go、node 等语言
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]
#test机房zookeeper配置
zookeeper.test=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
- 在QConf配置文件中指定本地机房
echo test > QCONF_INSTALL_PREFIX/conf/localidc #指定本地机房为test
- 启动QConf
cd QCONF_INSTALL_PREFIX/bin && sh agent-cmd.sh start
- 编写代码访问QConf
- zkdash - 由掌阅团队开发的dashboad平台,可以作为QConf或ZooKeeper的管理端
- 测试策略
- 测试次数 : 循环测试1000次,每次循环获取分别获取10000个不同key对应的值,总共取一千万次key
- 测试数据 : 每个key对应的value的大小是1k
- 测试方式 : 多进程测试时候,多个进程同时运行,然后截取其中一段时间,来记录各个进程运行取一千万次的总耗时
- 测试机器 : Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz, 24核;64G memory
- 测试语言 : c++
- 测试结果
- 结论
- 单进程的延迟是16微秒左右
- 在多进程的情况下,QPS 能够达到百万
- 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();
- Getting Started - QConf 使用说明,包括QConf的安装,运行,API等信息
- 实现介绍
- wiki
- qconf video guide
- 邮箱: [email protected]
- QQ群: 438042718