- 下载ZooKeeper,我下载的是3.4.6,解压
- vs2008或者以上
- 在windows 环境变量中,增加ZOOKEEPER_HOME定义,指向解压目录
- 手动修改project文件,$(ZOOKEEPER_HOME)\src\c\zookeeper.vcproj,用记事本(或者ultraedit等)打开,由于该文件是用utf-8编码的,在windows下默认带BOM头,直接删除前面2个字节(即BOM头)。
- 加载zookeeper.sln文件
- $(ZOOKEEPER_HOME)/bin/zkServer.cmd,启动ZooKeeper服务器(单机standalone)
- 编译并运行ZooKeeper.sln中的cli工程,启动ZooKeeper的client
第4步,如果直接打开sln文件,会发现不能正常加载ZooKeeper工程。因为,我们windows的默认编码都是GBK,不能识别ZooKeeper.vcproj文件的BOM头。
目前,ZooKeeper自带的c版client,非常底层,易读性差和使用繁杂。
另外,JAVA版建议使用Curator,apache的顶级开源项目http://curator.apache.org/,Leader Select(领导选举)
如果在X64上编译zookeeper client,会有如下错误,使用了非标准扩展: 不支持在此结构上使用“_asm”关键字,需要修改程序
- fetch_and_add 这是一个原子操作级别函数,原型为int32_t fetch_and_add(volatile int32_t* operand, int incr),即 等价于:
result=operand; operand =operand + incr; return result;
里面包含了汇编指令。
这个函数修改为如下,并在工程编译宏上加入WIN64,这样可以保证win32下仍然与源码一致,而win64下不同:
int32_t fetch_and_add(volatile int32_t* operand, int incr) { #ifndef WIN32 int32_t result; asm __volatile__( "lock xaddl %0,%1\n" : "=r"(result), "=m"(*(int *)operand) : "0"(incr) : "memory"); return result; #else volatile int32_t result=0; //wx 修改WIN32下函数 #if !defined WIN64 _asm { mov eax, operand; //eax = v; mov ebx, incr; // ebx = i; mov ecx, 0x0; // ecx = 0; lock xadd dword ptr [eax], ecx; lock xadd dword ptr [eax], ebx; mov result, ecx; // result = ebx; } #else result = *operand; InterlockedAdd((volatile LONG*)operand,incr); #endif return result; #endif }
或者直接用InterlockedAdd函数替换,直接修改为:
int32_t fetch_and_add(volatile int32_t* operand, int incr) { #ifndef WIN32 int32_t result; asm __volatile__( "lock xaddl %0,%1\n" : "=r"(result), "=m"(*(int *)operand) : "0"(incr) : "memory"); return result; #else volatile int32_t result= *operand; InterlockedAdd((volatile LONG*)operand,incr); return result; #endif }
相关推荐
linux下编译zookeeper3.7.0出的头文件和库: proto.h recordio.h zookeeper.h zookeeper.jute.h zookeeper_log.h zookeeper_version.h libzookeeper_mt.a libzookeeper_mt.la libzookeeper_mt.so libzookeeper_mt....
apache-zookeeper-3.7.1 apache-zookeeper-3.7.1 apache-zookeeper-3.7.1 apache-zookeeper-3.7.1 apache-zookeeper-3.7.1 apache-zookeeper-3.7.1 apache-zookeeper-3.7.1 apache-zookeeper-3.7.1 apache-zookeeper...
zookeeper-3.4.14,包含添加系统服务插件及添加bat. 1. zookeeper-3.4.14源包 2. commons-daemon-1.1.0-bin-windows.zip 插件 3. 配置好插件的zookeeper-3.4.14包,右键管理员权限执行zk-server-install.bat
apache-zookeeper-3.6.0.tar.gz
zookeeper-3.4.9.tar.gz
apache-zookeeper-3.5.7-bin.tar.gz 。
放在压缩包里了, 在windows下解压出"zookeeper-3.4.14.tar.gz"之后上传至虚拟机即可
zookeeper-3.4.5-cdh5.16.2.tar.gz 资源包,之前的原网站上无法下载,后经多种途径下载到该资源包,上传到博客上供大家使用。
最新版linux apache-zookeeper-3.7.0-bin.tar.gz最新版linux apache-zookeeper-3.7.0-bin.tar.gz
zookeeper-3.4.8zookeeper-3.4.8zookeeper-3.4.8zookeeper-3.4.8
zookeeper-3.4.6 解压后可直接运行 bin/zkServer.cmd 来启动
赠送jar包:zookeeper-3.4.10.jar; 赠送原API文档:zookeeper-3.4.10-javadoc.jar; 赠送源代码:zookeeper-3.4.10-sources.jar; 赠送Maven依赖信息文件:zookeeper-3.4.10.pom; 包含翻译后的API文档:zookeeper-...
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调...ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在zookeeper-3.4.3\src\recipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本。
赠送jar包:zookeeper-3.3.3.jar; 赠送原API文档:zookeeper-3.3.3-javadoc.jar; 赠送源代码:zookeeper-3.3.3-sources.jar; 包含翻译后的API文档:zookeeper-3.3.3-javadoc-API文档-中文(简体)版.zip 对应...
apache-zookeeper分布式框架,压缩包内容:(apache-zookeeper-3.7.1-bin.tar.gz、apache-zookeeper-3.7.1.tar.gz、apache-zookeeper-3.6.4-bin.tar.gz、apache-zookeeper-3.6.4.tar.gz、apache-zookeeper-3.5.10-...
zookeeper-3.4.8.jar
zookeeper-3.4.5.jar; zookeeper-3.4.5.jar; zookeeper-3.4.5.jar;
apache-zookeeper-3.7.0-bin.tar.gz
zookeeper-3.4.10和zookeeper-3.4.12
apache-zookeeper-3.5.5.tar.gz,zookeeper的安装文件,解压后配置集群即可