PS:本篇博客仅仅是我的的笔记,且是我的的理解,文字较为口语化,若有错误,请大牛指出。若是想了解更深刻的,能够根据我这篇博客的状况自行查找网上资料(官网或者其余大牛的博客详解)node
1、zookeeper的工做流程.net
zookeeper是整个集群的注册中心,全部的client端想要发起请求,都要通过zookeeper,并经过投票(超过半数)才能获得响应。server
2、zookeeper投票机制blog
zookeeper集群中能够有多个zookeeper server,其中会有一个leader server,其余的都是follower server,固然,leader server也是经过投票选出来的,当票数过半是就能够经过,若是只有一个zookeeper的话,那这个zookeeper就是leader server。client发起的请求(增删改操做,查询操做是由server直接返回,不须要投票)也是经过这种投票机制获得响应的。get
3、zookeeper的个数博客
通常zookeeper的个数要是奇数个,偶数个也是能够的,但不必。工作流
一、容错:例如,搭建3个和搭建4个zookeeper集群,此时若是要经过client发起的请求,那么3个zookeeper的集群要2票就能经过,那么这个集群就容许一台zookeeper挂掉;而4台zookeeper的集群就要3票才能经过,那么集群也只容许挂一台。既然都容许挂掉一台,那么就显得4台zookeeper就显得浪费了。it
二、splite-brain(脑裂):当集群分裂了成了两个集群,那么就容易出现这个问题,一样以3台和4台为例。当集群为3台时,可能会被分红1台和2台,那么此时2台的集群投票选出leader server时,就能够以2(超过半数)方式选出一个leader server;当集群为4台时,若是被分红了1台和3台是能够的,但若是被分红了2台和2台,那么不管怎么投票都没法选出一个leader server,就会出现全部的client的请求都被接受了,但没法给出响应。集群
4、zookeeper的经常使用client操做cli
进入zookeeper:./zkCli.sh -server 127.0.0.1:2181
建立znode:create /zk data
删除znode:delete /zk
查看znode:ls /
查看某个znode信息:get /zk
修改znode的值:set /zk aaa
待续。。。
第一篇:本篇博客为zookeeper相关的第一篇博客