100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 使用docker搭建zookeeper集群

使用docker搭建zookeeper集群

时间:2020-09-20 00:14:19

相关推荐

使用docker搭建zookeeper集群

1.创建 docker-cpmpose.yml

version: '3.1'services:zoo1:image: zookeeperrestart: alwayshostname: zoo1ports:- 2181:2181environment:ZOO_MY_ID: 1ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888zoo2:image: zookeeperrestart: alwayshostname: zoo2ports:- 2182:2181environment:ZOO_MY_ID: 2ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888zoo3:image: zookeeperrestart: alwayshostname: zoo3ports:- 2183:2181environment:ZOO_MY_ID: 3ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888

2.Zookeeper集群简单介绍

zookeeper身为分布式系统协调服务,为了防止自身挂掉,致使整个系统崩溃,zookeeper维护了一个集群。

zookeeper集群由奇数个点组成,采用一主多从的结构,主节点称为leader,从节点称为flower。

3.Zookeeper实现数据一致性

当某个服务注册到zookeeper集群的某个节点时,为了实现zookeeper集群的数据一致性,需要将该服务也同时注册到集群中的其他节点上,那我们应该怎样去操作,将数据同步呢?

我们知道zookeeper集群采用一主多从的结构,当我们将服务注册到某个从节点时,该从节点向主节点发送消息(该消息中包含服务信息),主节点收到消息之后,会通过广播(包含服务信息)通知所有从节点,收到消息之后,全部节点开始进行写操作。实现的数据的一致性。

4.Zookeeper服务的崩溃恢复

zookeeper集群中的节点也不是非常稳定的,也有可能因为网络的原因或者高并发的原因而崩溃(一般而言都是主节点崩溃)。当主节点崩溃之后,zookeeper集群是怎样实现恢复的呢?

当zookeeper集群中的主节点崩溃之后,zookeeper采用ZAB 协议,它可以有效的解决zookeeper集群的崩溃恢复以及数据同步问题。根据 ZAB协议,集群中的节点存在三种状态:

◉ Looking :选举状态;

◉ Following :Follower节点(从节点)所处的状态;

◉ LEading :Leader节点(主节点)所处状态;

处于正常状态的zookeeper集群中的节点存在两种状态:主节点(leader) 与 从节点(flower);崩溃之后,zookeeper集群中的节点都处于 Looking 状态,集群会根据ZAB协议投票选举出拥有最大 ZXID 的节点,让其处于 Leading状态。

为了防止出现多主现象的出现,选举出来的处于Leading状态的节点,会向其他节点发送通知,告诉其他节点自己是主节点,当大于一般的节点去认同他时,他才能正式称为主节点,否则继续投票选举。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。