Zookeeper入门

51 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第14天,点击查看活动详情

这篇开始,决定好好学习一下ZK,以前都是打一枪换个地,现在从头系统学习下,

Zookeeper类似于我们的计算机文件系统树结构, 由"/"作为根节点然后每个节点的标识是一个路径,它是一种分布式协调服务,用于管理分布式环境中的不同服务,我取的问W3C的一个图;结尾不能以"/"结尾;

对于这些节点也称Znode,如此每个Znode都不同,因为他们拥有唯一的路径,就像我们的文件一样,它所满足的是CAP中的CP,一致性是最终一致性(没有分布式能实时,只能说准实时), 这里注意的是虽然结构是树形结构,但是数据却是存放在内存上的,当数据到达一定后会存到磁盘上;

 ZK的特性主要有原子性实时性:表示zk会以最快的速度保证客户端接收该信息,可靠性:一个事务会被所有的服务所接受,顺序一致性, 我们看看Znode,znode分为了持久节点(会一直存在),和非持久节点(结束回话则失效,不能拥有子节点),

Znode存储的数据不宜过大,如果确需存储数据, 可以存在Redis中然后去取对应的位置的数据就行,处理存储必要的数据外,znode还可以存储一些状态信息,CZXID,即该数据节点被创建时的事务id(全局唯一的zxid)创建任意节点, 或者更新任意节点的数据, 或者删除任意节点, 都会导致Zookeeper状态发生改变, 从而导致zxid的值增加.,Ctime,即该节点的创建时间,cversion当前节点的子节点更改次数,dataLength数据节点内容长度, numChildren当前节点的子节点个数等等;

节点是一次性完整读写,Zookeeper的核心是原子广播,该机制保证了各个服务之间的同步。遵循的协议是Zab协议。Zab协议有两种模式,它们分别是恢复模式和广播模式, Zookeeper是一个由多个server组成的集群,每个从机都会拥有一个完整的副本数据,可以保证数据一致性,他适合读多写少的模式,对于更新,一般由主机进行转发从机进行接收进行同步,一般我们建议ZK集群应为奇数,同时最少三个起步为好;