PS:本篇博客仅仅是个人的笔记,且是个人的理解,文字较为口语化,如有错误,请大牛指出。如果想了解更深入的,可以根据我这篇博客的情况自行查找网上资料(官网或者其他大牛的博客详解)
一、zookeeper的工作流程
zookeeper是整个集群的注册中心,所有的client端想要发起请求,都要经过zookeeper,并通过投票(超过半数)才能得到响应。
二、zookeeper投票机制
zookeeper集群中可以有多个zookeeper server,其中会有一个leader server,其他的都是follower server,当然,leader server也是通过投票选出来的,当票数过半是就可以通过,如果只有一个zookeeper的话,那这个zookeeper就是leader server。client发起的请求(增删改操作,查询操作是由server直接返回,不需要投票)也是通过这种投票机制得到响应的。
三、zookeeper的个数
一般zookeeper的个数要是奇数个,偶数个也是可以的,但没必要。
1、容错:例如,搭建3个和搭建4个zookeeper集群,此时如果要通过client发起的请求,那么3个zookeeper的集群要2票就能通过,那么这个集群就允许一台zookeeper挂掉;而4台zookeeper的集群就要3票才能通过,那么集群也只允许挂一台。既然都允许挂掉一台,那么就显得4台zookeeper就显得浪费了。
2、splite-brain(脑裂):当集群分裂了成了两个集群,那么就容易出现这个问题,同样以3台和4台为例。当集群为3台时,可能会被分成1台和2台,那么此时2台的集群投票选出leader server时,就可以以2(超过半数)方式选出一个leader server;当集群为4台时,如果被分成了1台和3台是可以的,但如果被分成了2台和2台,那么无论怎么投票都无法选出一个leader server,就会出现所有的client的请求都被接受了,但无法给出响应。
四、zookeeper的常用client操作
进入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相关的第一篇博客
下一篇:https://my.oschina.net/u/2430231/blog/3032156
来源:oschina
链接:https://my.oschina.net/u/2430231/blog/3030463