Zookeeper的架构及安装

0 前言

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务。主节点挂了,从节点顶上,从节点得知道主节点挂了那一刻的业务处理状态。得有人能够保存主节点的运行状态。主节点挂了,从节点怎么知道主节点挂了。得有人能够监听主节点的运行状态。管理众多节点需要共享的数据,提供监听服务。

Zookeeper是一个分布式协调服务,可用于服务发现,分布式锁,分布式领导选举,配置管理等。 这一切的基础,都是Zookeeper提供了一个类似于Linux文件系统的树形结构(可认为是轻量级的内存文件系统,但只适合存少量信息,完全不适合存储大量文件或者大文件),同时提供了对于每个节点的监控与通知机制。 既然是一个文件系统,就不得不提Zookeeper是如何保证数据的一致性的。进行领导选举,以及数据监控/通知机制的语义保证。

1 Zookeeper架构

1. 角色

Zookeeper集群是一个基于主从复制的高可用集群,每个服务器承担如下三种角色中的一种。

Leader 一个Zookeeper集群同一时间只会有一个实际工作的Leader,它会发起并维护与各Follwer及Observer间的心跳。所有的写操作必须要通过Leader完成再由Leader将写操作广播给其它服务器。

Follower 一个Zookeeper集群可能同时存在多个Follower,它会响应Leader的心跳。Follower可直接处理并返回客户端的读请求,同时会将写请求转发给Leader处理,并且负责在Leader处理写请求时对请求进行投票。

Observer 角色与Follower类似,但是无投票权。

2. 原子广播(ZAB)

为了保证写操作的一致性与可用性,Zookeeper专门设计了一种名为原子广播(ZAB)的支持崩溃恢复的一致性协议。基于该协议,Zookeeper实现了一种主从模式的系统架构来保持集群中各个副本之间的数据一致性。 

根据ZAB协议,所有的写操作都必须通过Leader完成,Leader写入本地日志后再复制到所有的Follower节点。 

一旦Leader节点无法工作,ZAB协议能够自动从Follower节点中重新选出一个合适的替代者,即新的Leader,该过程即为领导选举。该领导选举过程,是ZAB协议中最为重要和复杂的过程。s

3. 写Leader

通过Leader进行写操作流程如下图所示

Zookeeper Leader Write

由上图可见,通过Leader进行写操作,主要分为五步:

客户端向Leader发起写请求 Leader将写请求以Proposal的形式发给所有Follower并等待ACK Follower收到Leader的Proposal后返回ACK Leader得到过半数的ACK(Leader对自己默认有一个ACK)后向所有的Follower和Observer发送Commmit Leader将处理结果返回给客户端

这里要注意

Leader并不需要得到Observer的ACK,即Observer无投票权 Leader不需要得到所有Follower的ACK,只要收到过半的ACK即可,同时Leader本身对自己有一个ACK。上图中有4个Follower,只需其中两个返回ACK即可,因为(2+1) / (4+1) > 1/2 Observer虽然无投票权,但仍须同步Leader的数据从而在处理读请求时可以返回尽可能新的数据

4. 写Follower/Observer

通过Follower/Observer进行写操作流程如下图所示:

从上图可见

Follower/Observer均可接受写请求,但不能直接处理,而需要将写请求转发给Leader处理

除了多了一步请求转发,其它流程与直接写Leader无任何区别

5. 读操作

Leader/Follower/Observer都可直接处理读请求,从本地内存中读取数据并返回给客户端即可。

由于处理读请求不需要服务器之间的交互,Follower/Observer越多,整体可处理的读请求量越大,也即读性能越好。

2 Zookeeper安装

1. 上传zookeeper至upload,并解压至app文件夹

zookeeper安装是基于SecureCRT连接linux:

tar-xvf /tmp/upload/zookeeper-3.4.6.tar.gz -C /app

2. 修改配置文件

zookeeper下创建的data目录

将conf文件夹下zoo_8sample.cfg复制一份,改名位zoo.cfg

修改配置dataDir属性,指定到data目录

3. 测试zookeeper

启动zookeeper:bin/zkServer.shstart关闭zookeeper:bin/zkServer.shstop查看zookeeper状态:bin/zkServer.shstatus

4. 关闭Linux防火墙

serviceiptables stop

5. 安装zookeeper的监控中心

1安装tomcat2上传解压缩tomcattar-xvf /tmp/upload/apache-tomcat-8.5.20.tar.gz -C /app3将admin的war包copy到tomcat的webapps目录下cd/app/apache-tomcat-8.5.20/webappsputD:\soft\linux\dubbo-admin.war4启动tomcatbin/startup.shtail-f logs/catalina.out5访问dubbo-admin,如果报错

进入WEB-INF中的配置文件dubbo.properties,修改zookeeper的服务器ip

需要输入用户名密码root服务治理提供者消费者应用

登录的用户名和密码,以及zookeeper服务器的ip地址设置在dubbo-admin这个网站的WEB-INF中的配置文件dubbo.properties。

参考文章:https://mp.weixin.qq.com/s/HJ28HPeSTX_f-8JwCdilig

你可能感兴趣的:(Zookeeper的架构及安装)