Zookeeper是什么
ZooKeeper 翻译一下就是 “动物园管理员”,他是一些管动物的管理员,关于他的名字来源给你们找来了,可以看看。
关于“ZooKeeper”这个项目的名字,其实也有一段趣闻。在立项初期,考虑到之前内部很多项目都是使用动物的名字来命名的(例如著名的Pig项目),雅虎的工程师希望给这个项目也取一个动物的名字。时任研究院的首席科学家RaghuRamakrishnan开玩笑地说:“在这样下去,我们这儿就变成动物园了!”此话一出,大家纷纷表示就叫动物园管理员吧一一一因为各个以动物命名的分布式组件放在一起,雅虎的整个分布式系统看上去就像一个大型的动物园了,而Zookeeper正好要用来进行分布式环境的协调一一于是,Zookeeper的名字也就由此诞生了。
如果用官方的说法就是ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务。它是一个为分布式应用提供一致性服务的软件.
ZooKeeper集群的角色
ZooKeeper提供服务时,是需要通过集群来实现,ZooKeeper集群中有一个leader,多个follower角色,其中leader提供写服务,follower提供读服务。
角色分类如下图所示:
系统模型如图所示:
下图这个就是我们实操最后会出现的结果:
-
[root@zookeeper1 bin]# ./zkServer.sh status
-
ZooKeeper JMX enabled by default
-
Using config: /root/zookeeper-3.4.14/bin/../conf/zoo.cfg
-
Mode: follower
-
[root@zookeeper2 bin]# ./zkServer.sh status
-
ZooKeeper JMX enabled by default
-
Using config: /root/zookeeper-3.4.14/bin/../conf/zoo.cfg
-
Mode: leader
-
[root@zookeeper3 bin]# ./zkServer.sh status
-
ZooKeeper JMX enabled by default
-
Using config: /root/zookeeper-3.4.14/bin/../conf/zoo.cfg
-
Mode: follower
再简单说一下我理解的zookeeper Leader的选举
就好比:我们每个参加的人发出一个投票投给自己,然后我们接受来自每个人的投票,统计一下,看一下是否是有效的投票,针对每一个投票,我们都需要将别人的投票和自己的投票进行