zookeeper--分布式可靠协调系统

1、总体介绍
1)角色:在zookeeper集群中,会有三种角色,leader、 follower、 observer分别对应着领导者、议员、观察者。
2)机制:zookeeper采用半数以上的投票通过机制。
3)工作方式:无论访问到了哪台zookeeper服务器,最终都会被转发给leader服务器,再由leader服务器分给zookeeper集群中所有follower服务器去投票,半数投票通过就被认为操作可执行,否则不可执行。observer与follower服务器最大的不同在于observer没有投票权,在客户端发起的请求或操作中,leader服务器是不会把消息传递给observer服务器让其投票的,只负责执行结果。
2、zookeeper集群节点为单数个
其根本为zookeeper的半数投票通过机制。
1)容错:
举例说明--
台服务器,至少2台正常运行才行,正常运行1台服务器都不允许挂掉;3台服务器,至少2台正常运行才行,正常运行可以允许1台服务器挂掉;4台服务器,至少3台正常运行才行,正常运行可以允许1台服务器挂掉;......
通过以上可以发现,3台服务器和4台服务器都最多允许1台服务器挂掉,5台服务器和6台服务器都最多允许2台服务器挂掉,但是明显4台服务器成本高于3台服务器成本,6台服务器成本高于5服务器成本。这是由于半数以上投票通过决定的。
2)防脑裂:一个zookeeper集群中,可以有多个follower、observer服务器,但是必需只能有一个leader服务器。如果leader服务器挂掉了,剩下的服务器集群会通过半数以上投票选出一个新的leader服务器。
举例说明--
一个集群3台服务器,全部运行正常,但是其中1台裂开了,和另外2台无法通讯。3台机器里面2台正常运行过半票可以选出一个leader。
一个集群4台服务器,全部运行正常,但是其中2台裂开了,和另外2台无法通讯。4台机器里面2台正常工作没有过半票以上达到3,无法选出leader正常运行。
一个集群5台服务器,全部运行正常,但是其中2台裂开了,和另外3台无法通讯。5台机器里面3台正常运行过半票可以选出一个leader。
一个集群6台服务器,全部运行正常,但是其中3台裂开了,和另外3台无法通讯。6台机器里面3台正常工作没有过半票以上达到4,无法选出leader正常运行。
3、配置说明
1)zoo.cfg文件
clientPort=2181
#client port,顾名思义,就是客户端连接zookeeper服务的端口。这是一个TCP port。
server.1=127.0.0.1:20881:30881
server.2=127.0.0.1:20882:30882
server.3=127.0.0.1:20883:30883
#上面的配置中有两个TCP port。后面一个是用于Zookeeper选举用的,而前一个是Leader和Follower或Observer交换数据使用的。server.后面的数字,就是myid。
2)myid介绍
在dataDir里会放置一个myid文件,里面就一个数字,用来唯一标识这个服务。这个id是很重要的,一定要保证整个集群中唯一。zookeeper会根据这个id来取出server.x上的配置。比如当前id为1,则对应着zoo.cfg里的server.1的配置。
而且在后面leader选举的时候,这个id的大小也是有意义的。
posted @ 2017-11-01 11:38  淡定的小鱼儿  阅读(225)  评论(0编辑  收藏  举报