360开源的Qconf配置同步工具使用记录


编译Qconf

git clone https://github.com/Qihoo360/QConf.git


cd Qconf
//注意如果不是root永恒,可能需要使用sudo权限
mkdir build && cd build
// 默认安装在/usr/local/qconf目录,后面的命令指定安装目录
cmake ..  或者 cmake .. -DCMAKE_INSTALL_PREFIX=/install/prefix
make
make install


//如果出错,也就下面几个错误了
sudo ln -s /usr/bin/aclocal /usr/bin/aclocal-1.14
sudo ln -s /usr/bin/automake /usr/bin/automake-1.14
sudo yum install -y texinfo

//一切顺利,即可编译成功
安装zookeeper,可参考散仙的文章:http://qindongliang.iteye.com/category/299318

给qconf配置zookeeper

默认的编译目录是在

cd /usr/local/qconf/
drwxr-xr-x. 2 root root 55 9月  20 17:31 bin
drwxr-xr-x. 2 root root  6 9月  20 17:31 cmd
drwxr-xr-x. 2 root root 53 9月  21 15:42 conf
drwxr-xr-x. 2 root root  6 9月  20 17:31 doc
drwxr-xr-x. 2 root root 23 9月  21 15:44 dumps
drwxr-xr-x. 2 root root 62 9月  20 17:31 include
drwxr-xr-x. 2 root root 41 9月  20 17:31 lib
drwxr-xr-x. 2 root root 21 9月  20 17:31 lock
drwxr-xr-x. 2 root root 54 9月  21 15:49 logs
drwxr-xr-x. 2 root root  6 9月  20 17:31 monitor
-rw-r--r--. 1 root root  5 9月  21 15:44 pid
drwxr-xr-x. 2 root root  6 9月  20 17:31 result
drwxr-xr-x. 2 root root 30 9月  20 17:31 script
-rw-r--r--. 1 root root 19 9月  20 16:14 version

//配置zk地址
vi conf/idc.conf
zookeeper.test=192.168.10.38:2181,192.168.10.39:2181,192.168.10.40:2181

//配置idc,默认是test就不用动
vi conf/localidc
test

//启动agent
sh bin/agent-cmd.sh start

//向zk写入几条测试数据,需要使用zookeeper自带的命令行写,qconf不支持写

(1) 路径: /tz/key1  内容:key1
(2) 路径: /tz/key2  内容:key2
(3) 路径: /tz/key3  内容:key3

//在shell下面读取zk里面的数据

qconf get_conf /tz/key1
//得到结果 key1
qconf get_conf /tz/key2
//得到结果 key2

qconf get_batch_keys /tz/
//结果
key1
key2
key3
编译Java客户端

//进入qconf的驱动端
cd /home/search/QConf/driver/java

//下面几个需要配置下
CC      = g++
JNI_DIR = /home/search/jdk1.8.0_102/include/
JNI_MD_DIR = /home/search/jdk1.8.0_102/include/linux/
QCONF_HEAD_DIR = /usr/local/qconf/include/
LIBOBJS = /usr/local/qconf/lib/libqconf.a

// 安装Ant,qconf编译java是用ant打包的

//下载Ant,http://ftp.tsukuba.wide.ad.jp/software/apache//ant/binaries/apache-ant-1.9.7-bin.tar.gz

//解压完,安装配置环境变量
#ant
export ANT_HOME=/home/search/ant
export CLASSPATH=$CLASSPATH:$ANT_HOME/lib
export PATH=$PATH:$ANT_HOME/bin


//最后执行 make 会在/home/search/QConf/driver/java/qconf_jar下面看到jar包

这个jar包,只能在linux上使用,win上调试不支持。
最后说下使用感,Qconf只能从zookeeper上读,并不支持写,也就是说,功能非常有限,本质上只能算是对操作zk的低级api做了个封装而已,而且只是读的api,比较low,而且客户端的java jar包,竟然不支持win上调试,让我很诧异,如果我要选择一个操作zk的框架,肯定是使用 curator,当然原生的zk也有jar,就是更加底层而已,像配置同步这件事使用zookeeper和redis都可以,zk的高可用方面会更好,配置同步这件事其实非常简单,就是存储和读取而已,然后对连接稍作优化即可,感觉Qconf适合那些不是Java为主的编程的人员使用,如果是Java编程人员,真心建议自己使用curator或者zk原生api来实现配置同步,并没有多大开发量,Qconf虽然开源的精神是不错的,但是这个东东太低级了,用起来也不太爽。

Qconf Github Wiki

https://github.com/Qihoo360/QConf


有什么问题可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。
技术债不能欠,健康债更不能欠, 求道之路,与君同行。

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。

Java 使用默认浏览器打开 URL - 2016-09-22 19:09:07

      URI uri = new URI(url);Desktop desktop = Desktop.getDesktop();if (desktop.isSupported(Desktop.Action.BROWSE)) {desktop.browse(uri);}            

Java线程Dump分析工具--jstack - 2016-09-22 18:09:03

Java线程Dump分析工具--jstack jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项"-J-d64",Windows的jstack使用方式只支持以下的这种方式:      jstack [-l][F] pid      如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。另

java spring整合websocket - 2016-09-21 17:09:03

这几天项目中需要整合websocket来支持业务,从网上看了好多资料。但是都很杂乱,我尝试了好多回,走了很多弯路,跳了很多坑~~~~~~。通过两天的调试终于成功!!!现在把调试步骤和容易出现的问题都列出来,让和我这样的新手有点帮助。开始上代码......... 【 备注:spring的版本4.0+ ,tomcat :7.50 + , jdk:1.8 】 java Spring 整合 websocket 有两种方法 : 1:配置方法 [网上有很多] (地址: http://blog.csdn.net/sti

Java命令行classpath的设置 - 2016-09-21 17:09:03

在练习JavaDB Embedded模式的Java编程时候,直接用编辑器开发,所以需要用平时不怎么用的命令行来编译代码,按照普通的方式进行编译之后,开始运行,结果弹出错误提示。 java -classpath derby.jar JavaDBTest 错误: 找不到或无法加载主类 JavaDBTest 想不通是怎么回事。后来发现,需要将当前目录也加入到ClassPath中 java -classpath .;derby.jar JavaDBTest 这样才能成功运行 Load the EmbeddedDri

java 虚拟机-内存管理 - 2016-09-21 14:09:23

      本地方法 非java代码实现的java方法,使用native关键字,除abstract外可与java关键字连用 程序计数器 可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支,循环,跳转,异常处理,线程恢复等基础功能。该区域时java虚拟机规范中没有规定outofmeroryError情况的区域 虚拟机栈   1、生命周期同线程一致 2、程序员通常指的栈内存区,更确切的是指虚拟机栈中的局部变量表部分 3、局部变量表存
jAVA基础 提高文件复制性能之多线程复制文件 利用IO流中的随机访问文件 RandomAccessFile 和文件通道 FileChanne 复制文件可大大提高文件的读写效率,在此基础上利用多线程复制文件使其性能更优。因线程的个数可根据文件的大小及需求而定。其大概原理是根据给定的线程个数,将文件分段,每个线程负责的数据大小=文件长度/线程个数,将不能除尽的部分留给最后一段文件所分配的线程处理。以下是实现代码及自己理解的注释,多有偏差请见谅。下面是兄弟连java培训总结的一些代码:供参考。 程序实现类代码
这个是我一个技术相当好的哥们去面试的时候碰到的奇葩问题,那天,这个面试官的答案是不能。后来就带着这个问题去国内外的论坛上搜了一把,也是各说纷纭,实在是没有一个统一的答案,简直有点公说公有理,婆说婆有理的架势。     几个意见大致如下,第一,不能,因为“进程是CPU进行调度的单位,而JVM是一个进程,于是就只能跑在一个CPU上”。第二,“进程是CPU进行调度的单位,这没错,但是OS负责将一个进程在不同的CPU上调度到另外一个CPU上,而这个进程,则是由不同的线程构成的,那么说,线程还是在不同的CPU上运行了
1、一个简单的订单号生成器: 从代码可以看出: long orderNo = (Long.parseLong((date))) * 10000;   orderNo += orderNum + Long.parseLong(RandomStringUtils.randomNumeric(3)); 每毫秒可以保证,10000-999个订单号不重复。     import java.text.SimpleDateFormat;import java.util.Date;import org.apache.co
Java是世界上最流行的程序语言,从1995年问世以来,Java的生态系统在一直在蓬勃的发展着。作为一门健壮的技术,Java社区为广大开发者提供了包括框架、库、web开发sdk、JVM语言等资源。在各种科技行业都能够找到关于Java编程的相关资源,这就是为什么Java会如此受人喜爱。 在今天,发达的网络技术推动了Java的发展,越来越多的人选择在网上学习,查看技术大牛的博客并进行交流成为了日常学习的一个重要手段。在这里,我整理了国外最流行的十大Java技术博客,它们都是由Java技术专家维护的,无论是初学
druid是号称目前最好的java数据库连接池,温少写点代码中有很多设计模式的思想,其中最重要的一个就是filter-chain设计模式给druid所带来的可扩展性。对此,我很感兴趣,并希望日后借鉴,所以看了看他的源码,以此记录一下。 druid中设计到filter-chain设计模式的类或接口主要有一下几个Filter、FilterAdapter、FilterChain、FilterChainImpl、FilterEventAdapter、FilterManager 以及举例讲讲两个具体的filter: