网站建设最难的部分,新网建站教程,wordpress虚拟主机,代运营哪家公司最正规一、缘起
1、CP还是AP
作为一个在大数据行业工作了7#xff5e;8年的老兵#xff0c;在被问到zookeeper和CAP时#xff0c;竟然有些恍惚#xff0c;AP还是CP#xff1f;
看了一些博文#xff0c;答案几乎都是CP#xff1f;
zookeeper的实现中#xff0c;P是一定的8年的老兵在被问到zookeeper和CAP时竟然有些恍惚AP还是CP
看了一些博文答案几乎都是CP
zookeeper的实现中P是一定的A在zookeeper集群leeder故障时也是不能保障的即便在短时间选举了新的leader。A不能满足就一定满足C吗
2、最终一致性的C
zookeeper保障顺序写入如下图leader发送Commit消息时Follower A和Follower B的并不一定一致的。A的客户端和B的客户端看到的内容不完全一致。 因此zookeeper解决的顺序写入保障数据写入顺序是一致的。zookeeper实现的是最终一致性。
通过这个问题让我有一种强烈的学习zookeeper源代码的冲动。
二、如何开始
zookeeper是开源项目源代码在github上非常容易获得如何阅读源代码呢
1、下载源代码 在Idea中使用git clone把远端的代码下载到本地。
2、编译源代码 zookeeper主分支的代码是可以编译和工作的。但在编译之前需要mvn clean install -DskipTests。否则直接在idea上编译会报错。 执行了mvn clean install -DskipTests之后会把一些jar包安装到本地的repo。
3、入口函数 zookeeper是client、server架构从代码的组织结构也能清晰的看到这一点。因此在学习源代码的过程中可以学习server、client的代码。 server入口函数 zookeeper/bin/zkServer.sh脚本ZOOMAIN变量中java的入口类org.apache.zookeeper.server.quorum.QuorumPeerMain QuorumPeerMain是zookeeper server的入口类。 client入口函数 zookeeper/bin/zkCli.sh脚本java入口类 org.apache.zookeeper.ZooKeeperMain