主页 > 新闻资讯 > 大数据学习:ZooKeeper的读写机制简介

大数据学习:ZooKeeper的读写机制简介

作者:张老师 浏览次数: 2021-06-18 16:55
Zookeeper作为Hadoop大数据生态圈不可或缺的支持组件,在学习阶段也是必学的一个部分。Zookeeper支持分布式服务的实现,在大数据技术架构层面,也是值得去深入理解掌握的。今天的大数据学习分享,我们主要来讲讲ZooKeeper的读写机制。

ZooKeeper的读写机制

ZooKeeper的核心思想是,提供一个非锁机制的Wait Free的用于分布式系统同步的核心服务。提供简单的文件创建、读写操作接口,其系统核心本身对文件读写并不提供加锁互斥的服务,但是提供基于版本比对的更新操作,客户端可以基于此自己实现加锁逻辑。如下图所示。

大数据学习:ZooKeeper的读写机制简介

ZK集群服务

Zookeeper是一个由多个Server组成的集群,该集群有一个Leader,多个Follower。客户端可以连接任意ZooKeeper服务节点来读写数据,如下图所示。

大数据学习:ZooKeeper的读写机制简介

ZK集群中每个Server,都保存一份数据副本。Zookeeper使用简单的同步策略,通过以下两条基本保证来实现数据的一致性:

①全局串行化所有的写操作

②保证同一客户端的指令被FIFO执行(以及消息通知的FIFO)所有的读请求由Zk Server本地响应,所有的更新请求将转发给Leader,由Leader实施。

ZK组件

ZK组件,如下图所示。ZK组件除了请求处理器(Request Processor)以外,组成ZK服务的每一个Server会复制这些组件的副本。

大数据学习:ZooKeeper的读写机制简介

ReplicatedDatabase是一个内存数据库,它包含了整个Data Tree。为了恢复,更新会被记录到磁盘,并且写在被应用到内存数据库之前,先被序列化到磁盘。

每一个ZK Server,可服务于多个Client。Client可以连接到一台Server,来提交请求。读请求,由每台Server数据库的本地副本来进行服务。改变服务器的状态的写请求,需要通过一致性协议来处理。

作为一致性协议的一部分,来自Client的所有写请求,都要被转发到一个单独的Server,称作Leader。ZK集群中其他Server称作Follower,负责接收Leader发来的提议消息,并且对消息转发达成一致。消息层处理leader失效,同步Followers和Leader。

ZooKeeper使用自定义的原子性消息协议。由于消息传送层是原子性的,ZooKeeper能够保证本地副本不产生分歧。当leader收到一个写请求,它会计算出当写操作完成后系统将会是什么状态,接着将之转变为一个捕获状态的事务。

ZK性能

ZooKeeper被应用程序广泛使用,并有数以千计的客户端同时的访问它,所以我们需要高吞吐量。我们为ZooKeeper设计的工作负载的读写比例是2:1以上。然而我们发现,ZooKeeper的高写入吞吐量,也允许它被用于一些写占主导的工作负载。ZooKeeper通过每台Server上的本地ZK的状态副本,来提供高读取吞吐量。因此,容错性和读吞吐量是以添加到该服务的服务器数量为尺度。写吞吐量并不以添加到该服务的机器数量为尺度。

关于大数据学习,ZooKeeper的读写机制,以上就为大家做了基本的介绍了。Zookeeper在现有的大数据技术生态来说,仍然是不可忽视的一个部分,而学习阶段,也应该相应做好准备。成都加米谷大数据,专业大数据培训,大数据开发、数据分析与挖掘,零基础班本月正在招生中,课程大纲及试学视频,可联系客服获取!
热点排行
推荐文章
立即申请>>