qconf php扩展,分布式配置管理系统QConf更新

一、QConf简介

在分布式环境中,出于负载、容错等种种原因,几乎所有的服务都需要在不同的机器节点上部署多个实例。同时,业务项目中总少不了各种类型的配置文件。这种情况下,有时仅仅是一个配置内容的修改,便需要重新进行代码提交svn/git,打包,分发上线的流程。当部署的机器有很多时,分发上线本身也是一个很繁杂的工作。而配置文件的修改频率又远远大于代码本身。 追本溯源,我们认为所有的这些麻烦是由于我们对配置和代码在管理和发布过程中不加区分造成的。配置本身源于代码,是为了提高代码的灵活性而提取出来的一些经常变化的或需要定制的内容,而正是配置的这种天生的变化特征给我们带了很大的麻烦。 因此,我们开发了分布式配置管理系统QConf,并依托QConf在360内部提供了一整套配置管理服务,QConf致力于将配置内容从代码中完全分离出来,及时可靠高效地提供配置访问和更新服务。

QConf是奇虎360广泛使用的配置管理服务,现已开源:https://github.com/Qihoo360/QConf 欢迎大家关注使用。

Release 1.2.0 Change Log兼容PHP 7.0+

兼容python3

提高了配置项读取速度(由于共享内存格式改变,使用该版本必须删除旧的共享内存)

支持使用zookeeper服务器域名配置QConf

解决了agent快速重启可能注册不上临时节点问题

agent共享内存添加了LRU机制

可以通过配置项设置共享内存大小

二、客户端接口支持PHP 7.0

QConf客户端接口现已支持PHP 7.0+,安装好QConf agent后在driver/php目录下重新编译PHP驱动,将生成的.so文件放入PHP扩展文件夹中并配置相应的php.ini

三、提高配置读取速度

Ⅰ. 新value验证方法

因为QConf读写共享内存时不对内存加锁,所以要采用数值验证方法来保证数据正确性,旧版采用md5保证数据正确性。由于计算md5开销比较大,所以最新实现方法对于将要放入共享内存的数据,如果小于某一值(当前设置为1500)就将数据本身复制一份作为验证码,如果大于设定值还是采用md5。存入共享内存的数据格式-----------------------------------------

| value len | value | verification code |

-----------------------------------------value len:value的长度(uint16_t)

verification code:value的MD5 或 原value值

由于QConf对配置信息的定位如下:

单条数据量小

更新频繁(较代码而言)

配置总数可能巨大,但单台机器关心配置数有限

读多写少

所以一般配置信息都很短,直接将配置信息本身作为验证码减少了计算量从而提高读取速度。

Ⅱ. 性能测试

Ⅱ.1 测试策略测试次数 : 循环取2000000次key值。

测试数据 : 存在1000个不同key对应的值,80%的key对应的value的大小是10~100B,15%为100~1KB,剩下的为1600~1700B。

测试方式 : 多进程测试,多个进程同时循环取1000个key,然后取所有进程结果平均值。

测试机器 : Intel(R) Xeon(R) CPU E5-2630 v2 @ 2.60GHz, 24核;157G memory

测试语言 : c++

Ⅱ.2 测试结果

使用新value验证方法的版本比使用md5验证的版本性能提升了约4倍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值