使用docker搭建zookeeper集群

1.建立 docker-cpmpose.yml

version: '3.1' services: zoo1: image: zookeeper restart: always hostname: zoo1 ports: - 2181:2181 environment: ZOO_MY_ID: 1 ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888 zoo2: image: zookeeper restart: always hostname: zoo2 ports: - 2182:2181 environment: ZOO_MY_ID: 2 ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888 zoo3: image: zookeeper restart: always hostname: zoo3 ports: - 2183:2181 environment: ZOO_MY_ID: 3 ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888

 

2.Zookeeper集群简单介绍

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

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

 

3.Zookeeper实现数据一致性

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

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

 

4.Zookeeper服务的崩溃恢复

          zookeeper集群中的节点也不是很是稳定的,也有可能由于网络的缘由或者高并发的缘由而崩溃(通常而言都是主节点崩溃)。当主节点崩溃以后,zookeeper集群是怎样实现恢复的呢?高并发

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

                      ◉ Looking :选举状态;rest

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

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

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

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

相关文章
相关标签/搜索