zookeeper:zookeeper学习笔记

自作多情 提交于 2019-11-30 08:01:16

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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!