1. ZooKeeper
导入项目
ZooKeeper 项目使用 ant 工具构建,IDEA 目前不支持,网上的做法是先使用 ant 转成 eclipse 项目,再导入 IDEA 中,一顿操作发现并没有成功,找到了第二种办法,成功了。
从 maven 仓库中 https://repo1.maven.org/maven2/org/apache/zookeeper/ 中找到 ZooKeeper 的 maven 项目。
/parent 是父 pom 文件, /zookeeper 是 server 端代码,/zookeeper-jute 是序列化工具。在 IDEA 新建 maven 项目将这三部分代码解压,拷贝 pom 文件和代码包。
运行项目
1. 新建 conf 文件,把 ZooKeeper github 上的 conf 拷过来,在启动类org.apache.zookeeper.server.ZooKeeperServerMain 中如下图参数获取 zoo.cfg 路径,在代码中加上路径。
2. 3.5.0 之后增加了内置 jetty ,网页版命令工具,默认端口8080。但执行代码是会出现关于jetty 的异常 java.lang.NoClassDefFoundError,解决办法如下图,修改scope。类似这样的错误也如此处理。
ps:网页版命令工具地址 http://localhost:8888/commands 端口和路径都是可以配置的
日志配置文件路径参数也可以加在启动参数里,如下图。
2 . Kafka
导入项目
Kafka 现在使用 gradle 构建项目,在 github 下 clone 代码。
1. mac 安装 gradel,brew install gradle
2. 下载 gradle 的 wrapper 程序套件,在 Kafka 目录下,gradle wrapper
3. ./gradlew clean releaseTarGz 将 Kafka 源码编译打包成 Jar 文件,在 core 的 build/distributions 目录下。
4. ./gradlew idea 创建 IDEA 项目,IDEA 打开项目。运行 Kafka.scala 文件
3. 源码统计
Kafka 源码包含测试代码 scala 代码接近15万行,Java 代码包括测试代码45万多行,主要集中在client模块下,据说是因为 Kafka新加入的代码贡献者Java开发不少,client 模块用Java重写了。
ZooKeeper 源码没下测试代码,接近6万行。