zookeeper简介

xiaoxiao2021-02-28  110

zookeeper简介

zk是以树作为其内存数据模型,树上的每一个节点是最小的数据单元,即Znode

znode具有不同的节点特性,同时每个节点都具有一个递增的版本号,以此可以实现分布式数据的原子性更新.

        zk的序列化层使用从hadoop中遗留下来的jute组件,该组件并不是性能最好的序列化框架,但是目前在zk中已经够用

zk的客户端和服务端会建立起tcp长连接来进行网络通信,基于该tcp连接衍生出来的会话概念, 是客户端和服务端直接所有请求交互的基石.在会话的生命周期中,会出现连接断开/重连或是会话失效等一系列问题,这些都是zk的会话管理器需要处理的问题-leader服务器会负责管理每个会话的生命周期,包括会话的创建/心跳检测和销毁等.

在服务器启动阶段,会进行磁盘数据恢复, 完成数据恢复后就会进行leader选举.一旦产生leader服务器后,就立即开始进行集群间的数据同步-在整个过程中, zk都处于不可用状态,直到数据同步完毕,zk才可以对外提供正常服务.在运行期间, 如果leader服务器所在机器挂掉或者和集群中绝大部分服务器断开连接,那么就会触发新一轮的leader选举.同样,在新的leader服务器选举产生之前,zk无法对外提供服务.

一个正常运行的zk集群,其机器角色通常由leader/follower/observer组成.zk对于客户端请求的处理, 严格的安装zab协议规范来进行.每一个服务器在启动初始化阶段都会组装一个请求处理链,leader服务器能搞处理所有类型的客户端请求,而对于follower或是observer服务器来说,可以正常处理非事务请求,而事务请求则需要转发给leader服务器来处理, 同事对于每个事务请求,leader都会为其分配一个全局唯一且递增的zxid,以此来保证事务处理的顺序性.在事务请求处理的过程中,leader和follower服务器都会进行事务日志的记录.

zk通过jdk的File接口简单地实现了自己的数据存储系统,其底层数据存储包括事务日志和快照数据2部分,这些都是zk实现数据一致性关键部分

转载请注明原文地址: https://www.6miu.com/read-84449.html

最新回复(0)