【服务】Qconf安装与基础使用

今天来跟大家分享的是奇虎360开源的 QConf 配置中心。

为什么我们需要做这么一件事情?

因为遇到了,当业务分布较广,配置分布较广的时候,就会很容易地出现一些问题,比如做了负载均衡,需要调整一下应用配置。刚好改漏了一台机,就偶尔出现一些问题,排查起来也是很吃力的。

QConf 的架构: QConf架构

除了 QConf 本身提供的工具之外,我们用到了一个有掌阅科技开发的 zkdash zookeeper 管理工具。

个人理解:

QConf 可以说是一个 zookeeper 的客户端,通过 agent 去 watch zookeeper 的变化,数据存在本机,当 zookeeper 发生变化是,自动改变本地数据,来达到同步更新的效果。

结构

这也就是为什么 QConf 需要搭配 zookeeper 去使用的原因之一吧。

QConf 服务端

QConf使用ZooKeeper集群作为服务端提供服务。众所周知,ZooKeeper是一套分布式应用程序协调服务,根据上面提到的对配置内容的定位,我们认为可以将单条配置内容直接存储在ZooKeeper的一个ZNode上,并利用ZooKeeper的Watch监听功能实现配置变化时对客户端的及时通知。 按照ZooKeeper的设计目标,其只提供最基础的功能,包括顺序一致,原子性,单一系统镜像,可靠性和及时性。

我们选择Zookeeper还因为它有如下特点:

1、类文件系统的节点组织

2、稳定,无单点问题

3、订阅通知机制

关于Zookeeper集群安装见http://blog.itpub.net/29096438/viewspace-2120934/

  1. zk创建模拟数据:
  2. 创建配置节点(这个后续会提供页面来处理):
  3. sh zkCli.sh
  4. [zk: localhost:2181(CONNECTED) 0]create /demo demo
  5. [zk: localhost:2181(CONNECTED) 0]create /demo/confs confs
  6. [zk: localhost:2181(CONNECTED) 0]create /demo/confs/conf1 111111111111111111111
  7. [zk: localhost:2181(CONNECTED) 0]create /demo/confs/conf2 222222222222222222222
  8. [zk: localhost:2181(CONNECTED) 0]create /demo/confs/conf3 333333333333333333333
  9. [zk: localhost:2181(CONNECTED) 0] get /demo
    demo
    cZxid = 0xa
    ctime = Fri May 11 11:45:23 UTC 2018
    mZxid = 0xa
    mtime = Fri May 11 11:45:23 UTC 2018
    pZxid = 0xb
    cversion = 1
    dataVersion = 0
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 4
    numChildren = 1
    [zk: localhost:2181(CONNECTED) 1] ls /demo
    [confs]
    [zk: localhost:2181(CONNECTED) 2] ls /
    [qconf, zookeeper, demo, otter]



更多命令参考https://blog.csdn.net/xyang81/article/details/53053642






QConf 客户端

因为ZooKeeper在接口方面只提供了非常基本的操作,并且其客户端接口原始,所以我们需要在QConf的客户端部分解决如下问题:

1、降低与ZooKeeper的链接数 原生的ZooKeeper客户端中,所有需要获取配置的进程都需要与ZooKeeper保持长连接,在生产环境中每个客户端机器可能都会有上百个进程需要访问数据,这对ZooKeeper的压力非常大而且也是不必要的。

2、本地缓存 当然我们不希望客户端进程每次需要数据都走网络获取,所以需要维护一份客户端缓存,仅在配置变化时更新。

3、容错 当进程死掉,网络终端,机器重启等异常情况发生时,我们希望能尽可能的提供可靠的配置获取服务。

4、多语言版本接口 目前提供的语言版本包括:c,php,java,python,go,lua,shell。

5、配置更新及时 可以秒级同步到所有客户端机器。

6、高效的配置读取 内存级的访问速度。

安装

  1. 1. 使用源码安装
  2.     1)git clone https://github.com/Qihoo360/QConf.git
  3.     2) cd QConf && mkdir build && cmake .
  4.     3) make
  5.     4) make install

  6. 2. 使用rpm包安装
  7.     1) 根据不同的CentOS 系统下载不同的rpm包
  8.         下载页面:https://github.com/Qihoo360/QConf/releases
  9.         如果是CentOS 6.*,则下载:QConf-1.0.0-1.el6.x86_64.rpm
  10.         如果是CentOS 5.*,则下载:QConf-1.0.0-1.el5.x86_64.rpm
  11.     2) rpm -ivh QConf-1.0.0-1.el5.x86_64.rpm
  12.  
  13.  
  14.  Qconf 配置文件位于安装目录下conf目录,主要修改idc.conf的 Zookeeper 配置信息:
  15. [root@ip-10-1-2-32 conf]# more idc.conf
  16. ############################################################################
  17. # QCONF config #
  18. ############################################################################
  19. # all the zookeeper host configuration.
  20. #[zookeeper]
  21. zookeeper.test=10.1.2.32:2181,10.1.2.68:2181,10.1.2.175:2181

启动
  1. 启动qconf:
  2.  
  3. 1) cd /usr/local/qconf
  4. 2) cd bin && sh agent-cmd.sh start
  5. 3) export PATH=$PATH:/usr/local/qconf/bin


测试
  1. 使用 shell接口命令获取:
  2. qconf get_conf /demo/confs/conf1
  3. qconf get_batch_keys /demo/confs

  1. 其它接口看官文:
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


参考:
https://www.fanhaobai.com/2017/11/qconf-deploy.html
https://segmentfault.com/a/1190000008949515#articleHeader0

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29096438/viewspace-2154374/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29096438/viewspace-2154374/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值