zookeeper入门学习《一》

  Zookeeper的安装就不介绍了,mac上用 brew install zookeeper就行了,可以看到已经启动着。

下面是   zoo.cfg的主要配置

tickTime=2000    zookeeper中使用的基本时间单位, 毫秒值

initLimit=5    follower和leader之间的最长心跳时间  

syncLimit=2    该参数配置leader和follower之间发送消息, 请求和应答的最大时间长度

dataDir=/user/local/zookeeper/data    (myid文件 只有一行内容)

dataLogDir=/user/local/zookeeper/logs    

clientPort=2181  就是客户端连接zookeeper服务的端口

server.0=127.0.0.1:8880:7770   

server.1=127.0.0.1:8881:7771    

server.2=127.0.0.1:8882:7772 

端口后面一个是用于Zookeeper选举用的,而前一个是Leader和Follower或Observer交换数据使用的  

配置集群的时候,

参照zookeeper0/conf/zoo.cfg, 配置zookeeper1/conf/zoo.cfg, 和zookeeper2/conf/zoo.cfg文件. 

只需更改dataDir, dataLogDir, clientPort参数即可

下面是zookeeper的git地址,我clone下来瞻仰了下,智商捉急的我还没搞清楚实现逻辑,希望以后再公众号中还会出现zookeeper的身影。

https://github.com/apache/zookeeper.git

 zookeeper的源码是通过ant构造的,下载下来可以执行

    1.ant eclipse 

    2.导入eclipse就行啦,其他IDE估计也有类似方法吧,比如Intellij Idea

    在这里面,我是遇到一个问题,关键时刻靠搜索,你吐槽的百度,或者谷歌,一般我遇到的问题,前人都是替我踩过啦,假如要是没踩过,哇塞,居然没有人和我一样的问题,真好玩(估计是没有的)。 

    ant-eclipse-1.0.bin.tar.bz2文件,老是下载不成功,修改源码中build.xml中的配置,将地址get src=“http://downloads.sourceforge.net/project/ant-eclipse/ant-eclipse/1.0/ant-eclipse-1.0.bin.tar.bz2" 更换成如下地址get src="http://ufpr.dl.sourceforge.net/project/ant-eclipse/ant-eclipse/1.0/ant-eclipse-1.0.bin.tar.bz2

    关于zookeeper最新的信息,还可以看看它的官网,毕竟这边维护了很多的文档,虽然是英语,还可以看个大概哈,其实你把这些文字翻译成中文,看着也真觉得有点别扭,好,逼逼叨完了,看看zookeeper的官网。

http://zookeeper.apache.org/

     这些网站都会维护一个Getting Started Guide,对我来说,这可能就是传说中的从入门到放弃,因为一般看这种第一感觉是,哎哟,还不错哦,但是如果想进一步窥探,又会感觉很迷惘,然后就放弃了,就是感觉有这么一回事。下面是ZooKeeper Getting Started Guide:

    http://zookeeper.apache.org/doc/trunk/zookeeperStarted.html

    对我比较简单的就是使用 brew services start zookeeper,开始玩,当然还是单机先搞搞清楚。抓到一个含有main方法的类,就是你啦。

 zooKeeper的启动类是org.apache.zookeeper.server.quorum.QuorumPeerMain 启动时传入配置文件zoo.cfg的路径,QuorumPeerMain解析各项配置,如果发现server列表只有一个,那么直接通过ZooKeeperServerMain来启动单机版的Server;如果有多个,那么读取server列表和myid文件,启动QuorumPeer线程,QuorumPeer线程启动之后,首先做leader election。QuorumPeer共有4个状态:LOOKING, FOLLOWING, LEADING, OBSERVING;启动时初始状态是LOOKING,表示正在寻找确定leader中。Leader election的默认算法是基于TCP实现的fast Paxos算法。QuorumPeer线程调用FastLeaderElection.lookForLeader选择leader,该方法会在确定leader之后改变QuorumPeer的状态为LEADING, FOLLOWING 或 OBSERVING。

  这边看到启动的时候,加载配置文件信息,还有加入ZKdatabase的数据,至于之后干的细节,我还需要捋一捋。

    zookeeper的数据存储是依靠DataTree.Java和DataNode.java组成的树形结构,至于怎么样,请听之后的的文章,从网上找个图,将就看看吧。

    最后介绍一下zkCli这个客户端脚本啦

  输入zkcli自然会进入程序中,简单的就是节点的增删改查啦,分别是 ls,set,get,delete

   ls列出指定节点的所有子节点

get指定节点的数据内容和属性信息

 set 就是更新节点信息

 delete 就是删除节点,当然命令删除的功能还是弱的,可能会出现Node not empty,你知道是为什么吗?后续再说

     对,就是这样的。哎哟,差点忘记了,最开始的当然是创建啦

  这一个简单的小介绍结束啦,晚上打球果然太兴奋啦,睡不着呀,哎

有什么讨论的内容,可以加我公众号:

猜你喜欢

转载自blog.csdn.net/woshiyexinjie/article/details/82429833