心血来潮,想看看zookeeper源码
学习一下人家怎么编译 https://www.jianshu.com/p/7ee757d6a08a
http://zookeeper.apache.org/ 【官网】
https://cwiki.apache.org/confluence/display/ZOOKEEPER/UsingEclipse 【confluence教程】
1、从github fork到自己的git上 https://github.com/gemeiren/zookeeper
2、本地的机器环境 JDK7 apache-ant-1.9.13
https://ant.apache.org/bindownload.cgi
3、
- 使用:ant eclipse命令 编译报错,https://blog.csdn.net/nysyxxg/article/details/78503412
- 本地的解决方案是 直接将下载依赖文件的 https协议改为http
- build.xml 、 ivysettings.xml
- 依赖下载没问题,但是JDK编译报错,修改JDK版本。【build.xml 】
4、最后成功
5、导入eclipse
6、项目报错 注意用JDK7 编译、本地的jre是7等
7、最后项目无报错了。
8、提交代码到自己的git上。。。。
9、运行本的zookeeper时,发现JDK版本跟jetty的对不上。【https://blog.csdn.net/freegf/article/details/47004347】
所以一开始就应该用jdk8来编译。如今只能在eclipse改为JDK8的JRE、编译
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/eclipse/jetty/server/Connector : Unsupported major.minor version 52.0
10、org.apache.zookeeper.server.ZooKeeperServerMain 运行时发现控制台没打印日记配置了一下绝对路径【http://fanrey.iteye.com/blog/1683137】
11、运行服务端: /ZooKeeper/src/java/main/org/apache/zookeeper/server/ZooKeeperServerMain.java
配置:D:\\Developer\\CODE\\dubbo_20180624\\zoo.cfg
-Dlog4j.configuration=file:/D:/Developer/CODE/dubbo_20180624/zookeeper/conf/log4j.properties
运行 客户端: /ZooKeeper/src/java/main/org/apache/zookeeper/ZooKeeperMain.java
配置:-server 127.0.0.1:2181 get /root
-Dlog4j.configuration=file:/D:/Developer/CODE/dubbo_20180624/zookeeper/conf/log4j.properties
12、随便找一篇zk的介绍看看【领导者选举算法、cap理论只满足cp而已,因为leader挂了要选举,此时服务不可用】
http://zookeeper.apache.org/doc/r3.4.12/zookeeperInternals.html
13、https://cwiki.apache.org/confluence/display/ZOOKEEPER/Zab+vs.+Paxos
两个协议不一样的地方,主要是 Zab 是主备【增量,有序的,简单理解:只有一个master更新节点并同步给其他节点,具有强一致性】,Paxos是 状态机【每个节点数据都是全量的、并且有可能是无序的,最终一致性】